mysqldump meminta kata sandi di shellscript

9

Saya menulis skrip shell sederhana untuk membuang database mysql tertentu. Masalahnya adalah meminta saya untuk kata sandi meskipun saya memberikan pada. Db mysql adalah versi 5.0.27 jika itu penting. Inilah garis spesifik yang saya gunakan.

$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE

Saya mencoba beberapa variasi, tetapi tidak berhasil.

aduljr
sumber

Jawaban:

4

Saya ingin bertaruh bahwa $MyPassskrip Anda tidak diatur dengan benar. Jika salah satu alat baris perintah mysql menerima -pyang tidak segera diikuti oleh kata sandi, mereka menganggap mereka harus meminta kata sandi. Di sisi lain, jika Anda memberikan kata sandi yang salah (atau nama pengguna yang salah atau sejenisnya) itu hanya akan gagal terhubung.

Jadi, saya sarankan menempatkan echoperintah di awal baris itu dan menjalankan kembali skrip Anda, seperti:

echo $MYSQLDUMP -u backup -p$MyPass $DB

Jangan lupa untuk menghapus pengalihan output.

Insyte
sumber
1
doh, itu adalah variabel bodoh, memiliki topi ketika diatur vs huruf kecil di baris di atas. thanks guys
aduljr
18

Solusi yang lebih baik adalah dengan menyimpan nama pengguna dan kata sandi dalam file konfigurasi dan arahkan ke file konfigurasi tersebut. Dengan memilikinya di baris perintah, siapa pun yang dapat menjalankan ps dapat menemukan kata sandi untuk server Anda.

Pass --defaults-extra-file=/pathto/database.cnfke dump mysql.

File konfigurasi perlu terlihat seperti ini. Atur izin sistem file sehingga hanya proses pencadangan yang dapat membuka file konfigurasi.

[client]
host     = servername.domain.tld
user     = backup
password = strongpassword

Pembaruan (2016-06-29) Jika Anda menjalankan mysql 5.6.6 atau lebih tinggi, Anda harus melihat alat mysql_config_editor yang memungkinkan Anda untuk menyimpan kredensial dalam file terenkripsi. Terima kasih kepada Giovanni karena menyebutkan ini padaku.

Sakit kepala
sumber
itu adalah pengguna spesifik untuk basis data itu dengan hanya cukup izin untuk melakukan pencadangan. Hanya dua orang yang memiliki akses ke server ini, saya dan satu orang lainnya. Tapi saya akan menggunakan ide file cnf itu. tidak pernah tahu tentang opsi itu. terima kasih
aduljr
3
Saya tahu ini adalah jawaban lama, tetapi masih muncul ketika mencari cara untuk dengan aman melewati kata sandi dan itu ditautkan dari posting lain juga. Menggunakan versi 5.5, saya harus merangkum kata sandi kuat dalam kutu tunggal dalam file konfigurasi, seperti jika kata sandi aoeu1234saya, file konfigurasi saya memiliki password = 'aoeu1234'; jika tidak, Anda akan mendapatkan kesalahan yang tidak sah.
Damon
Ingin tahu apakah ada solusi yang tidak memasukkan kata sandi dalam cleartext dalam file .cnf.
Bob Stein
@Zoredache, Bagaimana "siapa pun yang dapat menjalankan ps dapat menemukan kata sandi untuk server Anda"?
Pacerier
@Damon, Dan bagaimana jika kata sandi Anda memiliki kutu ini?
Pacerier