mysqldump抛出一个;“拒绝访问”;错误,但仅当通过logrotate运行时?

mysqldump抛出一个;“拒绝访问”;错误,但仅当通过logrotate运行时?,mysql,cron,logrotate,Mysql,Cron,Logrotate,我有一个CentOS 7.7的盒子。它运行的是mariadb 15.1 我正在尝试设置一个每天将数据库转储到文件系统的进程。转储的数据将由logrotate管理,logrotate转储数据并旋转文件,只保留最新版本 我在其他系统上这样做没有问题,但是这个服务器不合作 /etc/logrotate.d/mariadb文件包含类似于以下内容的节(系统上每个数据库一节): 我已经在/root和/etc中创建了.my.cnf文件(权限设置为0600,归root所有) 如果通过正常计划的logrotate

我有一个CentOS 7.7的盒子。它运行的是mariadb 15.1

我正在尝试设置一个每天将数据库转储到文件系统的进程。转储的数据将由logrotate管理,logrotate转储数据并旋转文件,只保留最新版本

我在其他系统上这样做没有问题,但是这个服务器不合作

/etc/logrotate.d/mariadb文件包含类似于以下内容的节(系统上每个数据库一节):

我已经在/root和/etc中创建了.my.cnf文件(权限设置为0600,归root所有)

如果通过正常计划的logrotate运行,则它总是会失败:

mysqldump: Got error: 1045: "Access denied for user 'root'@'localhost' (using password: NO)" when trying to connect
如果我使用crontab条目为root用户使用cron作业显式运行logrotate配置文件,则它可以工作,例如:

50 8 * * * /usr/sbin/logrotate -f /etc/logrotate.d/mariadb

我错过了什么?为什么mysqldump在通过root的crontab运行时可以工作,但在通过正常调度的logrotate运行时会失败?

好吧……我想出来了。这是对/root/.my.cnf文件的SELinux权限。(我发现有信息说/etc/.my.cnf文件也可以工作,但显然在本例中没有检查它。)


我要补充的是,当我意识到如果在运行logrotate命令时未在您的环境中设置$HOME环境变量,则可能会触发完全相同的错误时,我暂时被引入了一个错误路径。因此,如果您看到的不是SELinux,请检查$HOME变量并确保相应的目录包含.my.cnf文件。

您在
.my.cnf
文件上设置了什么SELinux文件类型?
50 8 * * * /usr/sbin/logrotate -f /etc/logrotate.d/mariadb