mysqldump fordert zur Eingabe des Passworts in Shellscript auf

9

Ich habe ein einfaches Shell-Skript geschrieben, um eine bestimmte MySQL-Datenbank zu sichern. Das Problem ist, dass ich aufgefordert werde, ein Passwort einzugeben, obwohl ich es angegeben habe. Die MySQL-Datenbank ist Version 5.0.27, wenn das wichtig ist. Hier ist die spezifische Linie, die ich benutze.

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

Ich habe verschiedene Variationen ausprobiert, aber ohne Erfolg.

aduljr
quelle

Antworten:

3

Ich würde wetten, dass dies $MyPassin Ihrem Skript nicht richtig eingestellt ist. Wenn eines der MySQL-Befehlszeilentools -pein Kennwort erhält , auf das nicht sofort ein Kennwort folgt, wird davon ausgegangen, dass es zur Eingabe des Kennworts aufgefordert werden sollte. Wenn Sie andererseits ein falsches Passwort (oder einen falschen Benutzernamen oder ähnliches) angegeben haben, kann die Verbindung einfach nicht hergestellt werden.

Daher schlage ich vor, einen echoBefehl am Anfang dieser Zeile zu platzieren und das Skript wie folgt erneut auszuführen:

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

Vergessen Sie nicht, die Ausgabeumleitung zu entfernen.

Insyte
quelle
1
doh, es war die blöde Variable, hatte Großbuchstaben übergeben, als sie in der obigen Zeile gegen Kleinbuchstaben gesetzt wurde. danke Jungs
Adultjr
18

Eine bessere Lösung wäre, den Benutzernamen und das Kennwort in einer Konfigurationsdatei zu speichern und auf diese Konfigurationsdatei zu verweisen. Wenn Sie es in der Befehlszeile haben, kann jeder, der ps ausführen kann, das Kennwort für Ihren Server finden.

Übergeben Sie die --defaults-extra-file=/pathto/database.cnfan MySQL-Dump.

Die Konfigurationsdatei muss so aussehen. Stellen Sie die Dateisystemberechtigungen so ein, dass nur der Sicherungsprozess die Konfigurationsdatei öffnen kann.

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

Update (29.06.2016) Wenn Sie MySQL 5.6.6 oder höher ausführen, sollten Sie sich das Tool mysql_config_editor ansehen , mit dem Sie Anmeldeinformationen in einer verschlüsselten Datei speichern können. Vielen Dank an Giovanni , der mir das gesagt hat.

Zoredache
quelle
Es ist ein bestimmter Benutzer für diese Datenbank mit nur ausreichender Berechtigung zum Durchführen einer Sicherung. Nur zwei Personen haben Zugriff auf diesen Server, meine und eine andere Person. Aber ich werde diese Idee einer CNF-Datei nutzen. wusste nie über diese Option. danke
aduljr
3
Ich weiß, dass dies eine alte Antwort ist, aber sie wird immer noch angezeigt, wenn gesucht wird, wie das Passwort sicher weitergegeben werden kann, und es wird auch von anderen Posts verlinkt. In Version 5.5 musste ich das sichere Passwort in einzelnen Ticks in der Konfigurationsdatei kapseln, z. B. wenn mein Passwort lautet aoeu1234, hat meine Konfigurationsdatei password = 'aoeu1234'; Andernfalls wird ein nicht autorisierter Fehler angezeigt.
Damon
Ich frage mich, ob es eine Lösung gibt, die kein Passwort im Klartext in einer .cnf-Datei enthält.
Bob Stein
@Zoredache, wie "kann jeder, der ps ausführen kann, das Passwort für Ihren Server finden"?
Pacerier
@Damon, und was ist, wenn Ihr Passwort diese Häkchen hat?
Pacerier