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