Dies ist tatsächlich ein Befehl, dem der >Operator folgt : "Nehmen Sie die Ausgabe des vorherigen Befehls und speichern Sie ihn in dieser Datei."
Hinweis: Das Fehlen eines Leerzeichens zwischen -p und dem MySQL-Passwort ist kein Tippfehler. Wenn Sie jedoch das -pFlag vorhanden lassen, das tatsächliche Kennwort jedoch leer ist, werden Sie zur Eingabe Ihres Kennworts aufgefordert. Manchmal wird dies empfohlen, um Passwörter aus Ihrem Bash-Verlauf herauszuhalten.
Mann mysql: Wenn Sie die Kurzform der Option (-p) verwenden, Sie können nicht einen haben Raum zwischen der Option und dem Passwort ein .
Tanky Woo
3
Gute Erklärung für das "Leerzeichen" zwischen -p und dem eigentlichen Passwort
okey_on
1
Wenn Sie SSH verwenden, sollten Sie die Verwendung von SCP oder SFTP erwähnen, um die Dump-Datei auf dem lokalen PC zu speichern, wie in der Frage gestellt
izzulmakin
Sie sollten sicherstellen, dass in der Firewall-Einstellung der 3306-Port für TCP geöffnet ist.
Gspoon
41
Niemand erwähnt etwas über die Option --single-transaction . Benutzer sollten es standardmäßig für InnoDB-Tabellen verwenden, um die Datenkonsistenz sicherzustellen. In diesem Fall:
Dadurch wird sichergestellt, dass der Speicherauszug in einer einzelnen Transaktion ausgeführt wird, die von den anderen isoliert ist, wodurch die Sicherung einer Teiltransaktion verhindert wird.
Angenommen, Sie haben einen Spieleserver, auf dem Benutzer mit ihrem Kontoguthaben Zahnräder kaufen können. Es gibt im Wesentlichen zwei Operationen gegen die Datenbank:
Ziehen Sie den Betrag von ihrem Guthaben ab
Fügen Sie die Ausrüstung ihrem Arsenal hinzu
Wenn der Speicherauszug zwischen diesen Vorgängen erfolgt, führt das nächste Mal, wenn Sie die Sicherung wiederherstellen, dazu, dass der Benutzer das gekaufte Element verliert, da der zweite Vorgang nicht in der SQL-Speicherauszugsdatei gespeichert wird.
Obwohl dies nur eine Option ist , gibt es im Grunde keinen Grund, warum Sie diese Option nicht mit mysqldump verwenden.
Ausgezeichnet! Danke, Mann. Ich hatte MySQL-Zugriff auf Remote-Server, konnte aber keine DBs sichern. Der Fehler war mysqldump: Got error: 1044: "Access denied for user 'USER'@'%' to database 'DB_NAME'" when using LOCK TABLES, aber die Verwendung der --single-transactionOption in mysqldumplöste mein Problem.
Ali Yousefi Sabzevar
20
Dieses Thema wird auf der ersten Seite meines Google-Ergebnisses angezeigt. Hier ist ein kleiner nützlicher Tipp für Neuankömmlinge.
Sie können die SQL auch ausgeben und in einer Zeile gzipen:
Haben Sie Zugang zu SSH?
Mit diesem Befehl in der Shell können Sie eine gesamte Datenbank sichern:
Dies ist tatsächlich ein Befehl, dem der
>
Operator folgt : "Nehmen Sie die Ausgabe des vorherigen Befehls und speichern Sie ihn in dieser Datei."Hinweis: Das Fehlen eines Leerzeichens zwischen -p und dem MySQL-Passwort ist kein Tippfehler. Wenn Sie jedoch das
-p
Flag vorhanden lassen, das tatsächliche Kennwort jedoch leer ist, werden Sie zur Eingabe Ihres Kennworts aufgefordert. Manchmal wird dies empfohlen, um Passwörter aus Ihrem Bash-Verlauf herauszuhalten.quelle
Niemand erwähnt etwas über die Option --single-transaction . Benutzer sollten es standardmäßig für InnoDB-Tabellen verwenden, um die Datenkonsistenz sicherzustellen. In diesem Fall:
mysqldump --single-transaction -h [remoteserver.com] -u [username] -p [password] [yourdatabase] > [dump_file.sql]
Dadurch wird sichergestellt, dass der Speicherauszug in einer einzelnen Transaktion ausgeführt wird, die von den anderen isoliert ist, wodurch die Sicherung einer Teiltransaktion verhindert wird.
Angenommen, Sie haben einen Spieleserver, auf dem Benutzer mit ihrem Kontoguthaben Zahnräder kaufen können. Es gibt im Wesentlichen zwei Operationen gegen die Datenbank:
Wenn der Speicherauszug zwischen diesen Vorgängen erfolgt, führt das nächste Mal, wenn Sie die Sicherung wiederherstellen, dazu, dass der Benutzer das gekaufte Element verliert, da der zweite Vorgang nicht in der SQL-Speicherauszugsdatei gespeichert wird.
Obwohl dies nur eine Option ist , gibt es im Grunde keinen Grund, warum Sie diese Option nicht mit mysqldump verwenden.
quelle
mysqldump: Got error: 1044: "Access denied for user 'USER'@'%' to database 'DB_NAME'" when using LOCK TABLES
, aber die Verwendung der--single-transaction
Option inmysqldump
löste mein Problem.Dieses Thema wird auf der ersten Seite meines Google-Ergebnisses angezeigt. Hier ist ein kleiner nützlicher Tipp für Neuankömmlinge.
Sie können die SQL auch ausgeben und in einer Zeile gzipen:
quelle
quelle
-p[password]
und nicht-p [password]
?-p'pa$$w0rd!!!!'
Versuchte alle Kombinationen hier, aber das hat bei mir funktioniert:
mysqldump -u root -p --default-character-set=utf8mb4 [DATABASE TO BE COPIED NAME] > [NEW DATABASE NAME]
quelle
Auf diese Weise würden Sie eine Sicherung wiederherstellen, nachdem Sie Ihre SQL-Datei erfolgreich gesichert haben
Und wählen Sie Ihre SQL-Datei mit diesem Befehl:
quelle