Mysqldump시 입력하는 패스워드 있잖아요

$ mysqldump -u 아이디 -p’패스워드’ DB명 > 저장될경로/파일명

이렇게 하면 SQL파일로 백업이 됩니다

이걸 크론에서 돌리기 위해서 파일로 만들어 두려고 하는데 패스워드 입력부분 때문에 거슬리네요

누군가 이 파일을 강제로 열어서 볼 수 있게 된다면 mysql까지 바로 뚫리게 될텐데 다른 방법이 없을까요?

2가지가 생각 됩니다.
백업 스크립을 루트가 만든 디렉에 700 주고 그 안에 넣는 방법…
sudo -i
mkdir /root/sbin
chmod 700 /root/sbin

두번째로는 다른 파일 참조로 만드는 거죠
파일을 만든 후 600 주고…
vi /root/conf/password
내용 중 그안에 기입을 …
dbpassword = 디비루트패스워드

백업 스크립에…
#!/bin/bash
.
.
psssword=cat /root/conf/password | grep -w dbpassword | gawk -F='{print $2}'
.
.
mysqldump -u root -p$password DB명 > 저장될경로/파일명

말씀주신 첫번째 방법대로 해보겠습니다

두번째 방법은 어려워 보이면서도 신기하네요??

봐도 모르겠는 ㅠㅠ

두번째 방법은 간단하게, 남이 볼 수 없는 위치에 plain text로 패스워드를 담고 있는 파일을 생성한 뒤,

백업 스크립트에서 그 파일 내에 있는 패스워드를 가져와서 변수에 넣은 다음, 백업 명령어 수행 시에 그 패스워드 변수를 사용하는 거랍니다.

주의하셔야 할 것이,

[code:3u7tb70x]psssword=cat /root/conf/password | grep -w dbpassword | gawk -F='{print $2}'[/code:3u7tb70x]

이 라인에서

[code:3u7tb70x]cat /root/conf/password | grep -w dbpassword | gawk -F=‘{print $2}’[/code:3u7tb70x]

위 명령어를 감싸고 있는 것이 single quotation marks(작은 따옴표)가 아니라 숫자 키 1 왼쪽에 위치한 back quotation mark(`)라는 겁니다.

백업 스크립트에서 저렇게 ` 로 명령어를 감싸면 그 명령의 standard output을 돌려 줍니다. 그걸 받아서 변수에 집어 넣는 거죠.

명령어가 하는 일은 아까 만든 패스워드 파일을 standard output에 뿌리는데, 그 중에 패스워드 부분만 출력될 수 있도록 한 것입니다.

제가 보기에는 두번째 방법이 나아보이네요. :)

비밀번호를 위처럼 입력하실려면…

서버의 ps나, /proc/*/cmdline를

권한 조정을 해야합니다.

$ mysqldump -uXXX -pXXX XXX > XXX

입력하면 ps -ef 에서나 /proc/ 에서 순간 보일 수 있습니다.

다른 방법으로

mysql 백업 전용 mysql계정을 만들고(백업에 필요한 권한만 설정)

expect를 써서 접속하거나…
(확인 안해봄; apt-get install expect)

비밀번호없이 인증서나 개인키? 같은걸 이용해야 할것 같습니다.
(이건 상상입니다, 지원하지 않을까요?)