쉘 스크립트를 사용하여 데이터베이스를 원격 서버에서 내 Synology NAS로 백업하고 있습니다. 스크립트가 잘 작동하지만 'localhost'라는 원격 서버의 mysql config에 바인드 주소를 설정하면 스크립트가 더 이상 작동하지 않습니다. 스크립트에는 SSH 확인이 필요합니다.쉘 스크립트가있는 백업 MySQL 데이터베이스 - 로컬 호스트에 바인드 주소가 설정되었습니다.
질문 :이 스크립트에서 SSH 연결/자격 증명을 만들려면 어떻게해야합니까? 스크립트 밑에
내가 사용
#! /bin/bash
TIMESTAMP=$(date +"%Y-%m-%d")
PAST=$(date +"%Y-%m-%d" -d "30 days ago")
BACKUP_DIR="/volume1/dir/dir2/$TIMESTAMP"
PAST_DIR="/volume1/dir/di2/$PAST"
HOST="myip"
MYSQL_USER="username"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="password"
MYSQLDUMP=/usr/bin/mysqldump
rm -rv $PAST_DIR
mkdir -p $BACKUP_DIR
databases=`$MYSQL -h $HOST --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`
for db in $databases; do
$MYSQLDUMP --force --opt -h $HOST --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.sql.gz"
done
광범위한 예제에 감사드립니다. 실행 중 오류가 발생합니다 (로컬 저장 옵션 사용). Taak : 데이터베이스 백업 myserver.com Starttijd : 2017년 12월 22일 (금) 그리니치 표준시 14시 12분 15초 Stoptijd : 2017년 12월 22일 (금) 그리니치 표준시 14시 12분 16초 Huidige 상태 : 0 Standaard uitvoer/FOUT : 경고 : 신원 파일/xHAYse7U1JuMJb4Kuu +/nGjQ/rYO8M5fPpnWSb6v2muIUxiJyrC/jIvx3K2ctmx8ROm167rNUxGeh0RiuqN + G + oUv1zXSE3SM7YIP5Z2mK9cfkFxKXMAUcM9pD0YvslfkYG + gEwEbC + rMTVI/SUOBZbd8SfDzbnuS2bwmIlk + NTAP 액세스 할 수 없습니다 : 그런 파일이나 디렉토리. ERROR 2003 (HY000) : 'serverIP'(111)에 MySQL 서버에 연결할 수 없습니다. – dna75
'-i' 플래그로 ssh 키의 전체 경로를 지정 했습니까? 또한 mysql에 사용되는'HOST'는 localhost로 설정 될 수 있습니다. 왜냐하면 원격 컴퓨터에 ssh로 연결하고 mysql을 원격 컴퓨터에서 로컬로 실행하기 때문입니다. 그래서'SSH_HOST'는 당신의 원격 머신이어야하고'HOST'는'localhost'가 될 수 있습니다 (이 예에서는 mysql과 함께 사용됩니다). – marcell
경로 대신 키를 입력했습니다. 경로를 사용할 때 다른 오류가 발생합니다. 경고 : 신원 파일 [email protected]에 액세스 할 수 없습니다. 해당 파일 또는 디렉토리가 없습니다. stdin이 터미널이 아니기 때문에 의사 터미널이 할당되지 않습니다. ssh : 호스트 이름을 확인할 수 없습니다./usr/bin/mysql -h xx.xxx.xxx.xxx --user = remote -kwnvs1avqin5 -s -e 'show databases'| grep : 이름 또는 서비스를 알 수 없음 – dna75