Melarikan kata sandi menggunakan konsol mysqldump


56

Saya menjalankan mysqldump melalui skrip bash dan telah mengalami masalah dengan kata sandi yang berisi karakter khusus.

mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz

Bagaimana cara saya lolos dari kata sandi?

Jawaban:


84

Saya menemukan jawabannya. Anda harus mengutip kata sandi, seperti ini:

mysql -u root -p'PASSWORD'

Anda harus melakukan ini jika kata sandi memiliki karakter berikut: * ? [ < > & ; ! | $ ( )


Apakah Anda tahu cara keluar dari tanda kutip di dalam kata sandi?
Steve Mayne

3
@SteveMayne saya pikir itu hanya backslash sebelum itu
psynnott

3
tanda kurung juga harus dalam tanda kutip.
Félix Gagnon-Grenier

1
Pada Windows saya menemukan saya harus menggunakan tanda kutip ganda. Kutipan tunggal tidak berfungsi. (MySQL 5.6)
TheStoryCoder

1
kata sandi yang kosong juga memerlukan tanda ''
Hafenkranich

12

ketika Anda menggunakan tanda kutip, pastikan tidak ada spasi:
antara -pdan 'PASSWORD' atau
antara --password=dan'PASSWORD'

benar:
mysql -u root -p'PASSWORD'
mysql -u root --password='PASSWORD'

tidak bekerja:
mysql -u root -p 'PASSWORD'
mysql -u root --password = 'PASSWORD'

Anda juga dapat mendefinisikan variabel dan kemudian menggunakannya untuk perintah (masih tanpa spasi di antaranya) MSQLPWD='PASSWORD'
mysql -u root -p$MSQLPWD


2

Tergantung pada cangkang Anda. Apakah Anda menggunakan Microsoft Windows atau Linux? Jika Anda menggunakan Linux / BASH maka kemungkinan $$ sedang ditafsirkan sebagai ID proses Anda saat ini. Sudahkah Anda mencoba meletakkan backslash di depan setiap tanda dolar? misalnya

mysqldump \
  -hlocalhost \
  -uUSERNAME \
  -pPA\$\$W0RD \
  DATABASE \
| gzip -c \
> /home/USERNAME/backups-mysql/BACKUP.gz

Perhatikan bahwa gzip mungkin memerlukan opsi "-c" jika Anda ingin mengompres ke STDOUT.


Kata sandi yang saya gunakan bukan PA $$ W0RD tapi saya menggunakan ini sebagai contoh. Kata sandi aktual yang saya gunakan memiliki ampersand dan inilah yang menyebabkan masalah. Saya menggunakan backslash seperti yang Anda sarankan tetapi tidak berhasil.
psynnott

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.