다음 스크립트를 사용하여 phpMyAdmin 설치에서 SQL 내보내기를 다운로드하려고 합니다(이 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 매개변수에 문제가 있는 것 같습니다.
phpMyAdmin에서 SQL 덤프 다운로드를 자동화하려면 어떻게 해야 합니까?
답변1
이런 방식으로 데이터베이스에 접근하고 싶은 상황이 있을 수 있지만, 저는 그 중 하나를 생각하는 데 어려움을 겪고 있습니다.
phpMyAdmin은 대화형 도구입니다. 원하는 종류의 자동화를 위해 설계되지 않았습니다.
SSH를 통해 웹 서버에 액세스할 수 있으면 mysqldump
SSH를 통해 실행하고 SSH 클라이언트 시스템에 덤프하세요.
웹 서버에서 일부 코드를 실행할 수 있습니까? 그렇다면 mysqldump
어딘가로 내보내는 데 필요한 코드와 함께 그곳에서 실행하세요(예: SCP나 FTP를 통해 업로드하거나 S3 버킷으로 업로드). 아니면 인증을 확인한 다음 HTTP를 통해 덤프 파일을 제공하는 작은 스크립트를 직접 작성할 수도 있습니다.
서버에 대한 더 넓은 액세스 권한이 있는 경우 backupninja
덤프와 원격 저장소로의 오프로드를 모두 처리하는 구성을 사용하여 와 같은 것을 실행하세요.
Phpmyadmin을 사용하도록 구성할 수 있습니다.HTTP 인증, 귀하가 사용 --http-user
하고 --http-password
암시하는 것처럼, 이 경우에는 쿠키 병이 필요하지 않습니다. 사용하도록 구성된 것을 찾는 것이 더 일반적입니다.쿠키 기반 인증, 이 경우 먼저 로그인 양식을 제출하여 쿠키를 얻은 다음 후속 요청에서 해당 쿠키를 사용해야 합니다.