mysqldump richiede la password in shellscript


9

Ho scritto un semplice script di shell per scaricare un database mysql specifico. il problema è che mi sta chiedendo una password anche se fornisco. Il db mysql è la versione 5.0.27 se questo è importante. Ecco la linea specifica che sto usando.

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

Ho provato diverse varianti, ma senza risultati.

Risposte:


4

Scommetto che $MyPassnon è stato impostato correttamente nella tua sceneggiatura. Se uno degli strumenti della riga di comando di mysql riceve un codice -pche non è immediatamente seguito da una password, presumono che debbano richiedere la password. Se, d'altra parte, hai fornito una password errata (o un nome utente errato o simile), non riuscirebbe a connettersi.

Quindi, suggerisco di inserire un echocomando all'inizio di quella riga e rieseguire lo script, in questo modo:

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

Non dimenticare di rimuovere il reindirizzamento dell'output.


1
doh, era la stupida variabile, aveva il limite tra maiuscole e minuscole nella riga sopra. grazie ragazzi
aduljr,

18

Una soluzione migliore sarebbe quella di memorizzare il nome utente e la password in un file di configurazione e puntare a quel file di configurazione. Avendolo nella riga di comando chiunque possa eseguire ps potrebbe trovare la password per il tuo server.

Passa --defaults-extra-file=/pathto/database.cnfal dump mysql.

Il file di configurazione deve apparire così. Impostare le autorizzazioni del filesystem in modo che solo il processo di backup possa aprire il file di configurazione.

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

Aggiornamento (29/06/2016) Se si esegue mysql 5.6.6 o versioni successive, è necessario esaminare lo strumento mysql_config_editor che consente di archiviare le credenziali in un file crittografato. Grazie a Giovanni per avermelo detto.


è un utente specifico per quel database con l'autorizzazione sufficiente per eseguire un backup. Solo due persone hanno accesso a questo server, la mia e un'altra persona. Ma userò quell'idea del file cnf. non ho mai saputo di quell'opzione. grazie
aduljr,

3
So che questa è una vecchia risposta, ma appare ancora quando si cerca come passare in modo sicuro la password ed è collegata anche da altri post. Usando la versione 5.5, ho dovuto incapsulare la strongpassword in singoli tick nel file di configurazione, come se la mia password fosse aoeu1234, il mio file di configurazione ha password = 'aoeu1234'; altrimenti riceverai un errore non autorizzato.
Damon,

Mi chiedo se esiste una soluzione che non include una password in chiaro in un file .cnf.
Bob Stein,

@Zoredache, In che modo "chiunque può eseguire ps potrebbe trovare la password per il tuo server"?
Pacerier,

@Damon, e se la tua password avesse queste spunta?
Pacerier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.