Automatisierter Export des phpMyAdmin SQL-Downloads mit wget

Automatisierter Export des phpMyAdmin SQL-Downloads mit wget

Ich verwende das folgende Skript, um zu versuchen, einen SQL-Export aus einer phpMyAdmin-Installation herunterzuladen (angepasst vondiese Stackoverflow-Frage)

read -p "Username: " USERNAME
read -p "Password: " PASSWORD
ADMIN_URL='https://example.com/phpmyadmin'
COOKIEJAR='/tmp/phpmyadmin_cookie'

token=$(
    wget -qO- \
         --http-user="$USERNAME" \
         --http-password="$PASSWORD" \
         --save-cookies "$COOKIEJAR" \
         --keep-session-cookies \
         "$ADMIN_URL" \
        | egrep -o 'token=[[:xdigit:]]+' | head -1
     )

post_data="$token&what=sql&export_type=server"

wget -O export.sql \
     --save-headers \
     --http-user="$USERNAME" \
     --http-password="$PASSWORD" \
     --load-cookies "$COOKIEJAR" \
     --post-data "$post_data" \
     "$ADMIN_URL/export.php"

rm "$COOKIEJAR"

Leider antwortet phpMyAdmin 4.7.9 mit einem Server 500-Fehler:

--2018-03-21 15:27:35--  https://woosh5.nl/phpmyadmin/export.php
Resolving woosh5.nl (woosh5.nl)... 37.97.205.130, 2a01:7c8:aac3:7::11
Connecting to woosh5.nl (woosh5.nl)|37.97.205.130|:443... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authentication selected: Basic realm="phpMyAdmin localhost"
Reusing existing connection to woosh5.nl:443.
HTTP request sent, awaiting response... 500 Internal Server Error
2018-03-21 15:27:35 ERROR 500: Internal Server Error.

Ich bin ziemlich sicher, dass die Authentifizierung erfolgreich ist. Daher muss mit den von mir gesendeten POST-Parametern etwas nicht stimmen.

Wie kann ich das Herunterladen von SQL-Dumps von phpMyAdmin automatisieren?

Antwort1

Es ist durchaus möglich, dass Sie auf diese Weise auf Ihre Datenbank zugreifen möchten, aber mir fällt keine einzige Situation ein.

phpMyAdmin ist ein interaktives Tool. Es ist nicht für die von Ihnen gewünschte Automatisierung konzipiert.

Wenn Sie über SSH auf Ihren Webserver zugreifen können, führen Sie es einfach mysqldumpüber SSH aus und führen Sie den Dump auf das SSH-Clientsystem durch.

Können Sie Code auf dem Webserver ausführen? Wenn ja, führen Sie ihn mysqldumpdort aus, zusammen mit dem Code, den Sie irgendwohin exportieren müssen (z. B. indem Sie ihn über SCP oder FTP oder in einen S3-Bucket hochladen). Oder schreiben Sie sich selbst ein kleines Skript, das die Authentifizierung überprüft und dann die Dump-Datei über HTTP bereitstellt.

Wenn Sie über umfassenderen Zugriff auf den Server verfügen, führen Sie etwas wie backupninjamit der Konfiguration aus, um sowohl den Dump als auch das Offloading auf den Remote-Speicher zu handhaben.

Es ist möglich, Phpmyadmin so zu konfigurieren, dass esHTTP-Authentifizierung, wie Ihre Verwendung von --http-userund --http-passwordimpliziert, aber in diesem Fall bräuchten Sie kein Cookie Jar. Es ist üblicher, es so konfiguriert zu finden, dass es verwendet wirdCookie-basierte Authentifizierung. In diesem Fall müssen Sie zuerst das Anmeldeformular übermitteln, um das Cookie zu erhalten, und dieses Cookie dann in nachfolgenden Anfragen verwenden.

verwandte Informationen