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.