답변:
명시된 바와 같이 man mysqldump
: 6.1.2.1 참조 . MySQL 참조 매뉴얼의 비밀번호 보안 에 대한 최종 사용자 지침 .
옵션 파일은 위 참조에 따라 가장 안전한 방법입니다. crontab에서 일반 텍스트로 제공하는 것은 좋지 않습니다. 특히 기본적으로 프로세스 명령 행이 ps
다른 사용자에게 표시되기 때문 입니다. 참조에서 설명한대로 실제로 환경 변수에도 동일하게 적용됩니다.
옵션 파일에 비밀번호를 저장하십시오. 예를 들어, Unix에서는 홈 디렉토리
[client]
의.my.cnf
파일 섹션에 비밀번호를 나열 할 수 있습니다 .[client] password=your_pass
암호를 안전하게 유지하려면 본인 외에 다른 사람이 파일에 액세스 할 수 없어야합니다. 이를 확인하려면 파일 액세스 모드를
400
또는로 설정하십시오600
. 예를 들면 다음과 같습니다.shell> chmod 600 .my.cnf
명령 행에서 비밀번호를 포함하는 특정 옵션 파일의 이름을 지정하려면 옵션을 사용하십시오
--defaults-file=file_name
. 여기서file_name
, 파일의 전체 경로 이름입니다. 예를 들면 다음과 같습니다.shell> mysql --defaults-file=/home/francis/mysql-opts
4.2.3.3 절 .“옵션 파일 사용” 에서는 옵션 파일에 대해 자세히 설명합니다.
/programming//q/10725209 도 참조 하십시오 .
cronjob을 특정 사용자로 실행하고 간단한 Bash 로직을 사용하여 사용자 또는 그룹이 액세스 할 수있는 권한이있는 시스템 어딘가에 저장된 일반 텍스트 파일에서 비밀번호를 추출하십시오.
PASS=`cat /path/to/pwdfile`
mysqldump -u aUser -p $PASS--all-databases > backup.sql
따라서 cronjob이 사용자 'example'로 실행되는 경우 파일의 소유권은 "example : example"이어야하고 0400이 허용되어야합니다.
사용자 수준 .my.cnf를 사용하여 유사한 기능을 수행 할 수도 있습니다 .
read PASS < /path/to/pwdfile
같은 일을하는 관용적으로 깨끗합니다 (아마도 나는 superuser.com/q/323060/49184가 적용됩니다).
ARGMAX
이 같은 구조를 유혹 수도가 내장 된 쉘을 사용하는 별도의 과정을 대신한다, for i in `cat file`; do ...
로 등 문제의 그러나 물론 자신의 배열 대부분의 일로 : 어떤 일이 일어나고 있는지 아는 사람은 자유롭게 선택할 수 있습니다. 나는 그것이 어떻게 나타날지에 관계없이 여기에 십자군에 있지 않습니다 :-D.
백업 목적으로 mysql에서 읽기 전용 사용자를 갖는 것을 고려하십시오.
CREATE USER bUser IDENTIFIED BY 'p4ss';
GRANT SELECT ON *.* TO bUser@localhost;
GRANT LOCK TABLES ON *.* TO bUser@localhost;
mysqldump는이 단지가 필요 SELECT
하고 LOCK TABLES
그 일을 할 권한을.