mysqldump shellscript'de şifre sorma


9

Belirli bir mysql veritabanı dökümü için basit bir kabuk komut dosyası yazdım. sorun ben sağlasam bile bana bir şifre soruyor olmasıdır. Eğer mysql db, 5.0.27 sürümüdür. İşte kullandığım belirli satır.

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

Birkaç varyasyon denedim, ama boşuna.

Yanıtlar:


4

$MyPassSenaryonuzda düzgün ayarlanmamış bahis . Mysql komut satırı araçlarından herhangi biri -phemen parola ile takip edilmeyen bir parola alırsa , parola sormaları gerektiğini varsayarlar. Öte yandan, yanlış bir şifre (veya yanlış kullanıcı adı veya benzeri) girdiyseniz, bağlantı kurulamaz.

Bu nedenle, echobu satırın başına bir komut yerleştirmenizi ve komut dosyanızı yeniden çalıştırmanızı öneririm :

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

Çıktı yönlendirmesini kaldırmayı unutmayın.


1
doh, bu aptal bir değişkendi, yukarıdaki satırda küçük harfe karşı ayarlandığında büyük harflerle geçti. thanks guys
aduljr

18

Daha iyi bir çözüm, kullanıcı adını ve parolayı bir yapılandırma dosyasında saklamak ve bu yapılandırma dosyasına işaret etmektir. Komut satırında bulunarak ps çalıştırabilen herkes sunucunuzun parolasını bulabilir.

Geçiş --defaults-extra-file=/pathto/database.cnfMySQL dökümü için.

Yapılandırma dosyasının böyle görünmesi gerekir. Dosya sistemi izinlerini, yapılandırma dosyasını yalnızca yedekleme işleminin açabileceği şekilde ayarlayın.

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

Güncelleme (2016-06-29) mysql 5.6.6 veya üstünü çalıştırıyorsanız, kimlik bilgilerini şifrelenmiş bir dosyada saklamanızı sağlayan mysql_config_editor aracına bakmalısınız . Giovanni'ye bundan bahsettiği için teşekkürler .


bu veritabanı için yalnızca yedekleme yapmak için yeterli izne sahip belirli bir kullanıcıdır. Bu sunucuya yalnızca iki kişi erişebilir, benim ve bir kişi. Ama o cnf dosya fikrini kullanacağım. bu seçeneği hiç bilmiyordum. teşekkürler
aduljr

3
Bunun eski bir cevap olduğunu biliyorum, ancak şifreyi güvenli bir şekilde nasıl geçireceğinizi ararken hala ortaya çıkıyor ve diğer gönderilerden de bağlı. 5.5 sürümü kullanarak, böyle şifrem sanki yapılandırma dosyasında tek keneler, içinde StrongPassword saklanması gerekiyordu aoeu1234, benim yapılandırma dosyası vardır password = 'aoeu1234'; aksi halde yetkisiz bir hata alırsınız.
Damon

Bir .cnf dosyasında açık metin olarak bir parola içermeyen bir çözüm olup olmadığını merak ediyorum.
Bob Stein

@Zoredache, nasıl "ps çalıştırabilirsiniz herkes sunucunun şifresini bulabiliriz"?
Pacerier

@Damon, Ya şifrenizde bu işaretler varsa?
Pacerier
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.