【问题标题】:How can I change the "using password" setting for logrotate to yes?如何将 logrotate 的“使用密码”设置更改为是?
【发布时间】:2023-03-11 10:45:01
【问题描述】:

我最近使用 MariaDB 设置了一个数据库,现在每天都会收到来自 logrotate 的错误消息(见下文)。我正在使用 root DB 用户的密码。根据我在网上找到的内容,我设置了 my.cnf 文件,但它没有改变任何东西。错误消息状态(使用密码:否)。我在网上看到的一些帖子说“是”。但是,我在网上或 MariaDB 设置文件中找不到任何文档,我可以告诉 logrotate 它应该使用密码。

错误信息:

/etc/cron.daily/logrotate: mysqladmin: connect to server at 'localhost'
failed error: 'Access denied for user 'root'@'localhost' (using password: NO)' 
error: error running shared postrotate script for '/var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/mariadb-slow.log /var/log/mysql/error.log ' 
run-parts: /etc/cron.daily/logrotate exited with return code 1

/root/.my.cnf

[mysqladmin]
password = "password"
user = root

[mysql]
password = "password"
user = root

我在 Debian Stretch 上运行 MariaDB 10.1.37

【问题讨论】:

    标签: mysql mariadb logrotate debian-stretch


    【解决方案1】:

    我建议您为 mysqladmin 提供单独的用户并赋予其最低权限。这可能会减少对黑客的脆弱性。

    mysqladmin 类似于mysql,它使用参数来决定什么用户、什么主机以及是否要求输入密码:

    • -p -- 动态询问密码(难以在批处理脚本中使用)
    • -pMyPwd -- 提供密码(不是很安全)
    • (以上都不是)--没有密码,或者...

    您可以使用mysql_config_editor 以特殊方式设置密码,这样您就不需要包含-p

    【讨论】:

    • 我了解登录 mysql,但 logrotate 是一个二进制可执行文件 (/usr/sbin/logrotate),每天由 cron 调用。它不接受 -p 参数。似乎在其设置或调用方式的某处,它期望无需密码即可登录(MariaDB 中 root 用户的默认设置)。我只需要弄清楚如何指示它使用 root 的 .my.cnf 文件中的用户名和密码。我已经看到其他人在打印“使用密码:YES”的地方得到的错误代码示例。
    最近更新 更多