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?

psynnott
sumber

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: * ? [ < > & ; ! | $ ( )

psynnott
sumber
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

MReiter
sumber
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.

PP
sumber
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
2

Coba backslashing ( \) karakter khusus itu.

antikris
sumber