쉘 스크립트에서 암호를 묻는 mysqldump 데이터베이스를 덤프하는 간단한 쉘 스크립트를

특정 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.cnfmysql을 덤프.

구성 파일은 다음과 같아야합니다. 백업 프로세스 만 구성 파일을 열 수 있도록 파일 시스템 권한을 설정하십시오.

[client]
host     = servername.domain.tld
user     = backup
password = strongpassword

업데이트 (2016-06-29) mysql 5.6.6 이상을 실행 하는 경우 암호화 된 파일에 자격 증명저장할 수 있는 mysql_config_editor 도구를 찾아야 합니다. 이것을 언급 해 준 Giovanni 에게 감사드립니다 .


답변