Я использую следующий скрипт, чтобы попытаться загрузить экспорт 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 выдает ошибку Server 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?
решение1
Конечно, могут возникнуть ситуации, когда вам может понадобиться получить доступ к своей базе данных таким образом, но мне сложно придумать хоть одну.
phpMyAdmin — это интерактивный инструмент. Он не предназначен для автоматизации того типа, который вам нужен.
Если вы можете получить доступ к своему веб-серверу через SSH, просто запустите его mysqldump
через SSH и выполните сброс в клиентскую систему SSH.
Можете ли вы запустить какой-нибудь код на веб-сервере? Если да, запустите его mysqldump
там, вместе с любым кодом, который вам нужно куда-то экспортировать (например, загрузить его через SCP или FTP, или в контейнер S3). Или, может быть, написать себе небольшой скрипт, который проверяет аутентификацию, а затем предоставляет файл дампа по HTTP.
Если у вас более широкий доступ к серверу, запустите что-то вроде backupninja
, с конфигурацией для обработки как дампа, так и выгрузки в удаленное хранилище.
Можно настроить Phpmyadmin для использованияHTTP-аутентификация, как подразумевает ваше использование --http-user
и --http-password
, но в этом случае вам не понадобится cookie jar. Чаще всего его можно найти настроенным на использованиеаутентификация на основе cookie-файлов, в этом случае вам необходимо сначала отправить форму входа, чтобы получить cookie, а затем использовать этот cookie в последующих запросах.