MariaDB 日志轮换错误

MariaDB 日志轮换错误

每天晚上,我都会收到来自服务器的一封电子邮件,内容如下:

/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

相关内容