특정 mysql 데이터베이스를 덤프하는 간단한 쉘 스크립트를 작성했습니다. 문제는 내가 제공하더라도 암호를 묻는 메시지입니다. mysql db는 5.0.27입니다. 여기에 내가 사용하고있는 특정 줄이 있습니다.
$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE
몇 가지 변형을 시도했지만 아무 소용이 없습니다.
답변
나는 $MyPass
당신의 대본에서 제대로 설정되지 않은 내기를 것 입니다. mysql 명령 행 도구 중 하나 -p
가 바로 뒤에 비밀번호가없는 것을 수신하면 , 비밀번호를 입력하라는 메시지가 표시됩니다. 반면에 잘못된 비밀번호 (또는 잘못된 사용자 이름 또는 유사한)를 제공 한 경우 연결에 실패합니다.
따라서 echo
해당 줄의 시작 부분에 명령을 배치하고 다음과 같이 스크립트를 다시 실행 하는 것이 좋습니다 .
echo $MYSQLDUMP -u backup -p$MyPass $DB
출력 리디렉션을 제거하는 것을 잊지 마십시오.
답변
더 나은 해결책은 구성 파일에 사용자 이름과 비밀번호를 저장하고 해당 구성 파일을 가리키는 것입니다. ps를 실행할 수있는 모든 사람이 명령 줄에 입력하면 서버의 암호를 찾을 수 있습니다.
전달 --defaults-extra-file=/pathto/database.cnf
mysql을 덤프.
구성 파일은 다음과 같아야합니다. 백업 프로세스 만 구성 파일을 열 수 있도록 파일 시스템 권한을 설정하십시오.
[client]
host = servername.domain.tld
user = backup
password = strongpassword
업데이트 (2016-06-29) mysql 5.6.6 이상을 실행 하는 경우 암호화 된 파일에 자격 증명 을 저장할 수 있는 mysql_config_editor 도구를 찾아야 합니다. 이것을 언급 해 준 Giovanni 에게 감사드립니다 .