Ich möchte die Datenbank in regelmäßigen Abständen mithilfe eines Shell-Skripts auf meiner remote gehosteten Site sichern. Leider ist der Server ziemlich eng gesperrt, hat keine mysqldump
Installation, Binärdateien können nicht von normalen Benutzern / in Home-Verzeichnissen ausgeführt werden (daher kann ich ihn nicht selbst "installieren") und die Datenbank befindet sich auf einem separaten Server kann die Dateien nicht direkt abrufen.
Ich kann mich nur über SSH beim Webserver anmelden und über den mysql
Befehlszeilenclient eine Verbindung zum Datenbankserver herstellen . Wie kann ich den Inhalt in eine Datei a la mysqldump
im SQL-Format sichern?
Bonus: Wie kann ich den Inhalt nach Möglichkeit direkt an mein Ende der SSH-Verbindung senden?
Ich mag die unten vorgeschlagene SSH-Tunnel-Idee, aber ich müsste sie doppelt tunneln.
localhost -> remote web server -> remote database server
Das funktioniert in Ordnung:
$ ssh -f -L 3306:mysql.example.com:3306 [email protected] -N
Der Versuch, sich bei MySQL anzumelden, schlägt jedoch fehl:
$ mysqldump -P 3306 -h localhost -u user -p db
Enter password:
mysqldump: Got error: 1045: Access denied for user 'user'@'localhost'
(using password: YES) when trying to connect
Ich denke, es wird erwartet, dass die Benutzeranmeldeinformationen vorliegen 'user'@'mysql.example.com'
. Wie kann ich es dazu bringen, das anstelle des "echten" Hosts zu verwenden?
Okay, ich habe es zum Laufen gebracht, indem ich es zu 127.0.0.1 mysql.example.com
meiner Hosts-Datei hinzugefügt und über verbunden habe mysqldump -P 3306 -h mysql.example.com -u user -p db
. Problem gelöst! Ich wäre immer noch an einer Lösung interessiert, bei der ich die Hosts-Datei nicht bearbeiten muss.
'user'@'localhost'
zusätzlich zu'user'@'mysql.example.com'
MySQL Berechtigungen erteilen , anstatt die Hosts-Datei zu bearbeiten.Antworten:
Sie können einen SSH-Tunnel einrichten und
mysqldump
auf Ihrem lokalen Computer verwenden.quelle
http://sypex.net/en/ - Sie können dieses Skript für die Datenbanksicherung verwenden, nachdem Sie es auf den Server hochgeladen haben. Sehr praktisch und schnell
quelle
Laden Sie dieses Skript auf Ihren Webserver hoch (ich hoffe, Sie haben mindestens FTP-Zugriff), starten Sie es, geben Sie den Datenbanknamen / Host (Adresse Ihres "separaten Servers") / Benutzernamen / Passwort an und sichern Sie die Datenbank an einem beliebigen Ort ...
quelle
Wenn Ihr Server ein Webserver ist, können Sie ein PHP-Skript verwenden, das die Datenbank für den Bildschirm ausgibt. Legen Sie auf Ihrem Sicherungsserver einen Cron ab, der die Dump-Seite erstellt. Dann wird Ihre Datenbank nur über HTTP auf Ihrem Sicherungsserver gespeichert.
Vergessen Sie nicht die Sicherheit: Jeder ist verfügbar, um Ihre Basis zu entleeren. Geben Sie ein Passwort oder eine IP-Beschränkung ein ...
quelle