每天晚上,我都会收到来自服务器的一封电子邮件,内容如下:
/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.log /var/log/mysql/mysql.log /var/log/mysql/mariadb-slow.log '
run-parts: /etc/cron.daily/logrotate exited with return code 1
我不知道为什么会发生这种情况,也不知道如何阻止这个错误。
答案1
有一个 Linux 实用程序 logrotate,它正在尝试轮换 mariadb 的日志。
您应该查看文件:
/etc/logrotate.conf
查找包含脚本的部分(它会给你发送邮件), 为首:
/var/log/mysql.log {
...
...
...
}
/var/log/mysql/mysql.log {
...
...
...
}
/var/log/mysql/mariadb-slow.log {
...
...
...
}
可能是因为没有输入凭证。如果不需要,请删除这些脚本(散列它们),或者将登录凭证提供给 MariaDB。
希望能帮助到你!
答案2
最近有人为 root 设置了密码吗?您的日志轮换可能需要一个包含密码的 /root/.my.cnf 或 /home/root/.my.cnf,以便日志轮换部分能够进入 mysql 并刷新日志。
您可能有一个 mysql 日志文件由于轮换失败而填满,甚至可能有一个已删除的文件保持打开状态。这将在重新启动或刷新相关日志时得到纠正。如果您用完了磁盘空间,但找不到造成这种情况的大文件,这很可能是原因。已删除的文件实际上并没有被删除,直到所有使用都被删除,包括 MariaDB 或 MySQL 将其保持打开状态以进行写入。
答案3
您可能设置/更改了您的 root 密码。
如果您使用的是 Debian,则可以在 中更新它/etc/mysql/debian.cnf
。
答案4
进入你的 mysql/mariadb 客户端并确保debian-系统维护密码为空的用户已存在于用户表mysql数据库
默认
/etc/mysql/debian.cnf
应该包含debian-系统维护作为用户代替根
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password =
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password =
socket = /var/run/mysqld/mysqld.sock
basedir = /usr