내 OpenBSD 상자에는 사용자 _mysql에 대해 다음과 같은 crontab이 있습니다.
0 4 * * * /backup/mysql_backup/mysql_backup.sh
0 9 * * 1 mysql -uroot -pMySQLpassword -e "purge master logs before date_sub(now(),interval 5 day);"
첫 번째는 이 상자에서 mysql 데이터베이스를 백업하는 것을 목표로 했습니다. 이제 _mysql 사용자의 연결 권한이 거부되었기 때문에 이러한 작업이 실행되지 않았다는 것을 깨달았습니다(_mysql 사용자의 비밀번호가 올바른지 확인했습니다).
그래서 저는 다른 사용자의 crontab에 이러한 작업이 있어야 한다고 생각합니다. 그런데 어느 것이 루트의 crontab에 있어서는 안 될까요? 그래서 이를 구성하는 방법에 대한 제안을 찾고 있습니다. 아니면 mysql 구성을 변경해야 합니까?
편집하다
스크립트는 데이터베이스와 동일한 서버에 있습니다. 이 crontab 항목은 오류로 인해 실패합니다.
connect(';host=localhost;mysql_read_default_group=mysqlhotcopy','',...) 실패: /usr/local/bin/mysqlhotcopy 라인 178에서 사용자 '_mysql'@'localhost'(비밀번호 사용: YES)에 대한 액세스가 거부되었습니다. aigaion_copy DBI
답변1
my.cnf에서 만료_logs_days=5를 사용하여 두 번째 cron 작업과 동일한 기능을 수행할 수 있습니다. 아마도 더 신뢰할 수 있습니다.
답변2
cronjob(_mysql)을 실행하는 시스템 사용자는 데이터베이스에 연결하는 사용자(루트)와 관련하여 중요하지 않습니다. 유일한 것은 스크립트가 연결되는 서버 호스트 이름/IP입니다.
스크립트가 데이터베이스와 동일한 서버에 있습니까? 명령을 실행하려고 할 때 발생하는 정확한 오류는 무엇입니까?
답변3
게시된 오류 메시지에 따르면 '_mysql'@'localhost' 사용자는 DB 내부에 필요한 권한이 없습니다.
이 사용자에게 필요한 권한을 부여하거나 /backup/mysql_backup/mysql_backup.sh 스크립트 내에서 다른 자격 증명을 사용해야 합니다.