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

Автоматический экспорт загрузки 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 выдает ошибку 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 в последующих запросах.

Связанный контент