Exportación automatizada de la descarga SQL de phpMyAdmin con wget

Exportación automatizada de la descarga SQL de phpMyAdmin con wget

Estoy usando el siguiente script para intentar descargar una exportación SQL desde una instalación de phpMyAdmin (adaptado deesta pregunta de Stackoverflow)

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"

Desafortunadamente, phpMyAdmin 4.7.9 responde con un error de Servidor 500:

--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.

Estoy bastante seguro de que la autenticación se realizó correctamente, por lo que debe haber algún problema con los parámetros POST que estoy enviando.

¿Cómo puedo automatizar la descarga de volcados de SQL desde phpMyAdmin?

Respuesta1

Es posible que haya situaciones en las que desee acceder a su base de datos de esta manera, pero me cuesta pensar en una.

phpMyAdmin es una herramienta interactiva. No está diseñado para la automatización del tipo que usted desea.

Si puede acceder a su servidor web a través de ssh, simplemente ejecútelo mysqldumpa través de ssh y vuelque al sistema cliente ssh.

¿Puedes ejecutar algún código en el servidor web? Si es así, ejecútelo mysqldumpallí, junto con el código que necesite para exportarlo a algún lugar (por ejemplo, cárguelo a través de SCP o FTP, o a un depósito S3). O tal vez escriba usted mismo un pequeño script que verifique la autenticación y luego proporcione el archivo de volcado a través de HTTP.

Si tiene un acceso más amplio al servidor, ejecute algo como backupninja, con config para manejar tanto el volcado como la descarga al almacenamiento remoto.

Es posible configurar Phpmyadmin para usarautenticación HTTP, como implica su uso de --http-usery --http-password, pero en ese caso no necesitaría un tarro de galletas. Es más común encontrarlo configurado para usarautenticación basada en cookies, en cuyo caso primero debe enviar el formulario de inicio de sesión para obtener la cookie y luego usar esa cookie en solicitudes posteriores.

información relacionada