Mariadb 在 docker 容器化部署之后出现过报错,提示文件无法写入日志,当时没在意,但现在想要获取到 SQL 语句(代码中存在困难),所以需要解决这个问题。

一开始以为是日志没有打开,百度了一下 mysql 几个日志的的打开方法:

mysql> set global general_log=on;
mysql> set global slow_query_log=on;

结果报错:ERROR 29 (HY000): File '/var/log/mysql/mysql.log' not found (Errcode: 13 "Permission denied")

之后进入到 mysql 命令行,通过 show variables like '%_log%'; 查看发现几个日志状态都是 ON。

几个日志文件地址:

general_log
/var/log/mysql/mysql.log

slow_query_log
/var/log/mysql/mysql-slow.log

error.log
/var/log/mysql/error.log

查看发现只有一个 error.log,其他两个文件都没有生成。

按照 MySQL性能优化(一)慢日志开启 教程提示,先放权,再重启 mysql。

# ubuntu,所以 sudo
sudo cd /var/log/
sudo chmod 777 mysql
sudo chown -R mysql.mysql mysql
# 重启 mysqld
systemctl restart mysqld

我这边是 docker 服务,所以 docker restart mariadb 重启容器就好了。