/etc/crontab에 비밀번호를 노출하지 않고 cron 예약 데이터베이스 백업(덤프)을 만듭니다.

/etc/crontab에 비밀번호를 노출하지 않고 cron 예약 데이터베이스 백업(덤프)을 만듭니다.

다음 /etc/crontab코드를 사용하여 지난 30일 동안 데이터베이스의 일일 백업을 생성합니다.

0 8 * * * mysqldump -u root -PASSWORD --all-databases > /root/backups/mysql/db.sql
1 8 * * * zip /root/backups/mysql/db-$(date +\%F-\%T-).sql.zip /root/backups/mysql/db.sql
2 8 * * * rm /root/backups/mysql/db.sql
2 8 * * * find /root/backups/mysql/* -mtime +30 -exec rm {} \;

내 질문:

비밀번호를 어디에 입력해야 합니까 -PASSWORD? 이렇게 하면 내가 실수로 이 파일의 내용을 변경하여 가까운 사람이 이를 보게 되면 내 비밀번호가 노출됩니다.

비밀번호를 입력하지 않고 스크립트를 사용할 수 있나요? 아니면 거기에 cronjob의 비밀번호를 쓰도록 강요하지 않는 유사한 구문을 알고 있습니까?

답변1

  1. 전체 덤프, 백업 및 정리를 수행하는 스크립트를 만듭니다.

  2. 스크립트를 예약합니다.

또한 암호는 mysql보호된 파일에 저장될 수도 있으며 명령줄에 입력할 필요가 없습니다.

MySQL에는 "최종 사용자 비밀번호 보안 가이드"검토하고 싶은 문서.

문서를 요약하면:

.my.cnf다음과 같이 홈 디렉터리에 비밀번호를 만들고 추가합니다 .

[client]
password=your_pass

그런 다음 파일에 대한 다른 사용자의 읽기 권한을 제거합니다.

$ chmod 600 .my.cnf

또는 동등하게,

$ chmod u=rw,go-rwx .my.cnf

파일 이름을 지정하고 홈 디렉터리에 저장하면 .my.cnf해당 파일은 클라이언트 프로그램에서도 자동으로 사용됩니다.mysqlmysqldump

그러나 백업 등을 자체 스크립트에 넣고 예약하십시오. 이는 많은 cron 작업보다 유지 관리가 더 쉽습니다.

관련 정보