Exportação automatizada de download do phpMyAdmin SQL com wget

Exportação automatizada de download do phpMyAdmin SQL com wget

Estou usando o seguinte script para tentar baixar uma exportação SQL de uma instalação do phpMyAdmin (adaptado deesta pergunta do 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"

Infelizmente, o phpMyAdmin 4.7.9 responde com um erro do 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.

Tenho certeza de que a autenticação foi bem-sucedida, portanto deve haver algo errado com os parâmetros POST que estou enviando.

Como posso automatizar o download de dumps SQL do phpMyAdmin?

Responder1

Pode haver situações em que você queira acessar seu banco de dados dessa maneira, mas estou lutando para pensar em uma.

phpMyAdmin é uma ferramenta interativa. Ele não foi projetado para automação do tipo que você deseja.

Se você puder acessar seu servidor web via ssh, basta executar mysqldumpvia ssh e despejar no sistema cliente ssh.

Você consegue executar algum código no servidor web? Se sim, execute mysqldumplá, junto com qualquer código que você precise exportar para algum lugar (por exemplo, carregue-o via SCP ou FTP, ou para um bucket S3). Ou talvez escreva um pequeno script que verifique a autenticação e forneça o arquivo de despejo por HTTP.

Se você tiver acesso mais amplo ao servidor, execute algo como backupninja, com config para lidar com o despejo e o descarregamento para armazenamento remoto.

É possível configurar o Phpmyadmin para usarAutenticação HTTP, como seu uso --http-userimplica --http-password, mas nesse caso você não precisaria de um pote de biscoitos. É mais comum encontrá-lo configurado para usarautenticação baseada em cookies, nesse caso você precisa primeiro enviar o formulário de login para obter o cookie e, em seguida, usar esse cookie nas solicitações subsequentes.

informação relacionada