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

问题描述 投票:0回答:1

我有一个CentOS 7.7盒子。它正在运行mariadb 15.1

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

我已经在其他系统上完成了此任务,但没有问题,但是该服务器没有配合。

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

/usr/local/backups/database-dumps/dbname-SQL-dump.sql.gz {
    daily
    rotate 8
    nocompress
    create 640 root adm
    postrotate
    mysqldump -u root dbname > /usr/local/backups/database-dumps/dbname-SQL-dump.sql --single-transaction
    gzip -9f /usr/local/backups/database-dumps/dbname-SQL-dump.sql
    endscript
}

我已经在/ 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

我想念的是什么?当通过root的crontab运行时,为什么mysqldump可以工作,但是通过正常调度的logrotate运行时,为什么mysqldump失败?

我有一个CentOS 7.7盒子。它正在运行mariadb 15.1,我正在尝试设置一个每天将数据库转储到文件系统的过程。转储的数据将由logrotate进行管理,其中logrotate ...

mysql cron logrotate
1个回答
0
投票

好...我知道了。这是对/root/.my.cnf文件的SELinux权限。 (我发现那里的信息说/etc/.my.cnf文件也可以工作,但是显然在这种情况下没有检查它。)

© www.soinside.com 2019 - 2024. All rights reserved.