쉘 스크립트에서 암호를 묻는 mysqldump


9

특정 mysql 데이터베이스를 덤프하는 간단한 쉘 스크립트를 작성했습니다. 문제는 내가 제공하더라도 암호를 묻는 메시지입니다. mysql db는 5.0.27입니다. 여기에 내가 사용하고있는 특정 줄이 있습니다.

$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE

몇 가지 변형을 시도했지만 아무 소용이 없습니다.

답변:


4

나는 $MyPass당신의 대본에서 제대로 설정되지 않은 내기를 것 입니다. mysql 명령 행 도구 중 하나 -p가 바로 뒤에 비밀번호가없는 것을 수신하면 , 비밀번호를 입력하라는 메시지가 표시됩니다. 반면에 잘못된 비밀번호 (또는 잘못된 사용자 이름 또는 유사한)를 제공 한 경우 연결에 실패합니다.

따라서 echo해당 줄의 시작 부분에 명령을 배치하고 다음과 같이 스크립트를 다시 실행 하는 것이 좋습니다 .

echo $MYSQLDUMP -u backup -p$MyPass $DB

출력 리디렉션을 제거하는 것을 잊지 마십시오.


1
doh, 그것은 멍청한 변수였으며 위의 줄에서 소문자로 설정되었을 때 대문자로 전달되었습니다. 고마워 얘들 아
aduljr

18

더 나은 해결책은 구성 파일에 사용자 이름과 비밀번호를 저장하고 해당 구성 파일을 가리키는 것입니다. 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 에게 감사드립니다 .


백업을 수행하기에 충분한 권한 만있는 해당 데이터베이스의 특정 사용자. 이 서버에 액세스 할 수있는 사람은 나와 다른 사람뿐입니다. 그러나 나는 그 cnf 파일 아이디어를 사용할 것입니다. 그 옵션에 대해 전혀 몰랐습니다. 감사
aduljr

3
나는 이것이 오래된 대답이라는 것을 알고 있지만 암호를 안전하게 전달하는 방법을 검색 할 때 여전히 표시되며 다른 게시물에서도 연결됩니다. 버전 5.5을 사용하여, 나는 그런 내 암호가있는 경우로 설정 파일에 하나의 틱에있는 strongpassword 캡슐화했다 aoeu1234, 내 설정 파일이있다을 password = 'aoeu1234'; 그렇지 않으면 무단 오류가 발생합니다.
Damon

.cnf 파일의 일반 텍스트에 비밀번호를 포함하지 않는 솔루션이 있는지 궁금합니다.
Bob Stein

@Zoredache, "ps를 실행할 수있는 사람이 서버의 암호를 어떻게 찾을 수 있습니까?"
Pacerier

@Damon, 그리고 비밀번호에 틱이 있으면 어떻게 되나요?
Pacerier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.