Da Sie Ubuntu verwenden, müssen Sie lediglich eine Datei in Ihr Home-Verzeichnis einfügen, um die Eingabeaufforderung für das mysqldump-Kennwort zu deaktivieren. Dies erfolgt durch Erstellen der Datei ~/.my.cnf
(Berechtigungen müssen 600 sein).
Fügen Sie dies der Datei .my.cnf hinzu
[mysqldump]
user=mysqluser
password=secret
Auf diese Weise können Sie eine Verbindung als MySQL-Benutzer herstellen, der ein Kennwort benötigt, ohne das Kennwort tatsächlich eingeben zu müssen. Sie brauchen nicht einmal das -p oder --password.
Sehr praktisch für die Skripterstellung von mysql- und mysqldump-Befehlen.
Die Schritte dazu finden Sie unter diesem Link .
Alternativ können Sie den folgenden Befehl verwenden:
mysqldump -u [user name] -p[password] [database name] > [dump file]
Beachten Sie jedoch, dass dies von Natur aus unsicher ist, da der gesamte Befehl (einschließlich des Kennworts) von jedem anderen Benutzer im System mit einem einfachen ps ax
Befehl angezeigt werden kann, während der Speicherauszug ausgeführt wird .
--defaults-file
. Wie `mysqldump --defaults-file = my_other.cnf --print-defaults`~/.my.cnf
. Siehe stackoverflow.com/a/14653239/470749 . MySql erwartete, dass meine bei sein würdec:\wamp\bin\mysql\mysql5.5.24\my.cnf
. Also habe ich dort eine Datei erstellt. Ein Neustart von MySQL war nicht erforderlich. es funktionierte sofort für meinen nächsten mysqldump.GRANT LOCK TABLES, SELECT ON *.* TO 'BACKUPUSER'@'%' IDENTIFIED BY 'PASSWORD';
Zur Antwort von @ Frankline hinzufügen:
Die
-p
Option muss aus dem Befehl ausgeschlossen werden, um das Kennwort in der Konfigurationsdatei verwenden zu können.Richtig:
mysqldump –u my_username my_db > my_db.sql
Falsch:
mysqldump –u my_username -p my_db > my_db.sql
.my.cnf
kann den Benutzernamen weglassen.Wenn sich Ihre
.my.cnf
Datei nicht an einem Standardspeicherort befindet undmysqldump
nicht angezeigt wird , geben Sie sie mit an--defaults-file
.mysqldump --defaults-file=/path-to-file/.my.cnf –u my_username my_db > my_db.sql
quelle
In einigen Antworten wird erwähnt, dass das Kennwort in eine Konfigurationsdatei eingefügt wird.
Alternativ können Sie von Ihrem Skript aus
export MYSQL_PWD=yourverysecretpassword
.Der Vorteil dieser Methode gegenüber der Verwendung einer Konfigurationsdatei besteht darin, dass Sie keine separate Konfigurationsdatei benötigen, um mit Ihrem Skript synchron zu bleiben. Sie müssen nur das Skript verwalten.
Es ist kein Nachteil dieser Methode.
Das Kennwort ist für andere Benutzer im System nicht sichtbar (es wäre sichtbar, wenn es sich in der Befehlszeile befindet). Die Umgebungsvariablen sind nur für den Benutzer sichtbar, der den Befehl mysql und root ausführt.
Das Kennwort ist auch für alle sichtbar, die das Skript selbst lesen können. Stellen Sie daher sicher, dass das Skript selbst geschützt ist. Dies unterscheidet sich in keiner Weise vom Schutz einer Konfigurationsdatei. Sie können das Kennwort weiterhin aus einer separaten Datei beziehen, wenn das Skript beispielsweise öffentlich lesbar sein soll
export MYSQL_PWD=$(cat /root/mysql_password)
. Es ist immer noch einfacher, eine Variable zu exportieren, als eine Konfigurationsdatei zu erstellen.Z.B,
quelle
export MYSQL_PWD=...
wird nicht in der Prozessliste angezeigt. Nicht einmal für den Bruchteil einer Sekunde. Dies liegt daran, dass derexport
Befehl eine integrierte Shell ist (und sein muss). Daher gibt die Shell keinen Prozess mit dem Argument des Befehls ab, wenn Sie ihn in Ihrer Shell ausführen.Verwenden Sie zum Verwenden einer Datei, die sich irgendwo innerhalb des Betriebssystems befindet,
--defaults-extra-file
z.Hinweis:
.sqlpwd
ist nur ein Beispieldateiname. Sie können verwenden, was Sie wollen.Hinweis: MySQL prüft automatisch,
~/.my.cnf
welche anstelle von verwendet werden kann--defaults-extra-file
Wenn Sie CRON wie ich verwenden, versuchen Sie dies!
Erforderliche Erlaubnis und empfohlenes Eigentum
.sqlpwd
Inhalt:Andere Beispiele zu übergeben
.cnf
oder.sqlpwd
Wenn Sie sich automatisch bei einer Datenbank anmelden möchten, benötigen Sie beispielsweise den
[mysql]
Eintrag.Sie können jetzt einen Alias erstellen, der Sie automatisch mit der Datenbank verbindet
Sie können das Passwort auch nur eingeben
.sqlpwd
und den Benutzernamen über das Skript / cli übergeben. Ich bin mir nicht sicher, ob dies die Sicherheit verbessern würde oder nicht, das wäre insgesamt eine andere Frage.Der Vollständigkeit halber möchte ich sagen, dass Sie Folgendes tun können, dies ist jedoch äußerst unsicher und sollte niemals in einer Produktionsumgebung verwendet werden:
Hinweis: Zwischen -p und dem Kennwort steht KEIN Leerzeichen.
ZB
-pPassWord
ist richtig, während-p Password
falsch ist.quelle
Ja, es ist sehr einfach ... nur in einer magischen Kommandozeile nicht mehr
und fertig :)
quelle
Mit MariaDB musste ich Folgendes tun: Fügen Sie die Datei hinzu
~/.my.cnf
und ändern Sie die Berechtigungen, indem Sie dies tunchmod 600 ~/.my.cnf
. Fügen Sie dann Ihre Anmeldeinformationen zur Datei hinzu. Das magische Stück, das mir fehlte, war, dass sich das Passwort unter dem Client-Block (ref: docs ) befinden muss, wie folgt:Wenn Sie hierher kommen und suchen, wie Sie mit MariaDB einen Mysqldump machen können. Platzieren Sie das Passwort unter einem [Client] -Block und den Benutzer unter einem [mysqldump] -Block.
quelle
[mysqldump]
Abschnitt eingefügt und es hat ohne Probleme funktioniert. Ubuntu 18.04 LTSHier ist eine Lösung für Docker in einem Skript / bin / sh:
Ersetzen Sie
[MYSQL_CONTAINER_NAME]
und stellen Sie sicher, dass die UmgebungsvariableMYSQL_ROOT_PASSWORD
in Ihrem Container festgelegt ist.Hoffe es wird dir helfen wie es mir helfen könnte!
quelle
Ich habe folgendes.
/ etc / mysqlpwd
Mit folgendem Alias.
Um eine Wiederherstellung durchzuführen, benutze ich einfach:
quelle
Was ist mit --password = "", das für mich unter 5.1.51 funktioniert hat?
quelle
--password=xxx
in die Befehlszeile wird das Kennwort für alle sichtbar, die proc lesen können (oder vollständige ps ausführen können) - was ziemlich standardmäßig ist.Auf jeden Fall denke ich, dass es besser und sicherer wäre, die gesamte cmd-Zeile mit Credentails in der Root-Crontab zu platzieren. Zumindest ist die Crontab-Bearbeitung auf jemanden beschränkt (lesbar), der das Passwort bereits kennt. Sie müssen sich also keine Sorgen machen, es im Klartext anzuzeigen.
Wenn mehr als ein einfacher mysqldump benötigt wird ... platzieren Sie einfach ein Bash-Skript, das Credentails als Parameter akzeptiert und alle darin enthaltenen Annehmlichkeiten ausführt ...
Die Basisdatei ist einfach
In der Crontab:
quelle
Sie können das Kennwort in der Befehlszeile wie folgt angeben:
Die Optionen für mysqldump unterscheiden zwischen Groß- und Kleinschreibung!
quelle
mysqldump -u root -pmypassword