Назад | Перейти на главную страницу

Автоматический экспорт загрузки phpMyAdmin SQL с помощью wget

Я использую следующий сценарий, чтобы попытаться загрузить экспорт SQL из установки phpMyAdmin (адаптирован из этот вопрос 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"

К сожалению, phpMyAdmin 4.7.9 отвечает ошибкой сервера 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.

Я совершенно уверен, что аутентификация прошла успешно, поэтому должно быть что-то не так с параметрами POST, которые я отправляю.

Как я могу автоматизировать загрузку дампов SQL из phpMyAdmin?

Вполне возможно, что могут возникнуть ситуации, когда вы захотите получить доступ к своей базе данных таким образом, но я не могу придумать такую ​​возможность.

phpMyAdmin - интерактивный инструмент. Он не предназначен для автоматизации того вида, который вам нужен.

Если вы можете получить доступ к своему веб-серверу через ssh, просто запустите mysqldump через ssh и выгрузить в клиентскую систему ssh.

Можете ли вы запустить какой-то код на веб-сервере? Если да, запустите mysqldump там, вместе с любым кодом, который вам нужно куда-нибудь экспортировать (например, загрузить через SCP, FTP или в корзину S3). Или, может быть, напишите себе небольшой скрипт, который проверяет аутентификацию, а затем предоставляет файл дампа по HTTP.

Если у вас есть более широкий доступ к серверу, запустите что-то вроде backupninja, с конфигурацией для обработки как дампа, так и выгрузки в удаленное хранилище.

Можно настроить Phpmyadmin для использования HTTP-аутентификация, поскольку вы используете --http-user и --http-password подразумевает, но в этом случае вам не понадобится банка cookie. Чаще всего он настроен на использование аутентификация на основе файлов cookie, и в этом случае вам необходимо сначала отправить форму входа, чтобы получить файл cookie, а затем использовать этот файл cookie в последующих запросах.