MySQL entspricht .pgpass oder automatische Authentifizierung in einem Cron-Job für mySQL

8

Ich schreibe ein Bash-Skript, um meine Datenbanken zu sichern. Die meisten sind postgresql, und in postgres gibt es eine Möglichkeit, die Authentifizierung zu vermeiden, indem eine ~ / .pgpass-Datei erstellt wird, die das postgres-Passwort enthält. Ich habe dies in das Home-Verzeichnis von root gestellt und es zu chmod 0600 gemacht, damit root die Postgres-Datenbanken sichern kann, ohne sich authentifizieren zu müssen. Jetzt möchte ich etwas Ähnliches für MySQL tun, obwohl ich nur eine MySQL-Datenbank habe. Wie kann ich das machen? Ich möchte das Kennwort in der Befehlszeile für mysqldump nicht angeben, da dies Teil eines Skripts ist, das für andere Benutzer möglicherweise etwas sichtbar ist. Gibt es eine bessere Möglichkeit (dh in MySQL integriert), dies zu tun, als eine Datei zu erstellen, die nur root lesen kann, und diese dann zu lesen, um das MySQL-Passwort zu erhalten, und diese dann im Bash-Skript als Variable zu verwenden?

Ibrahim
quelle
Hmm, seltsamerweise fand ich etwas vielversprechendes über Google und nicht über Serverfault's eigene Suche: stackoverflow.com/questions/601995/…
Ibrahim
Ja bleh, anscheinend fehlt mein Such-Fu.
Ibrahim

Antworten:

6

Erstellen Sie eine ~/.my.cnfDatei für den Benutzer die Ausführung von MySQL. Es sollte Folgendes enthalten:

[client]
user = root
password = yourpassword
Warner
quelle
Eine Sache, die ich hinzufügen möchte, ist, dass Sie, wenn Sie das Skript mit sudo ausführen, -H verwenden müssen, um sicherzustellen, dass es das Home-Verzeichnis von root verwendet. Aber ich denke, dieses Problem sollte kein Problem in einem Root-Cron-Job sein, richtig?
Ibrahim
3
Aber wie wird das für mehrere Konten gehandhabt? Das funktioniert für localhost, aber was ist, wenn ich mein Login für einen Remote-Server speichern möchte?
Cerin