Mysql

正常日誌記錄在 MySQL 中不起作用

  • October 4, 2021

我在 SF 上看到 MySQL 中有一個選項可以記錄所有查詢。因此,在我的版本(CentOS 5.2 上的 mysql-server-5.0.45-7.el5)中,這似乎是啟用“日誌”選項的情況,所以我編輯/etc/my.cnf添加了這個:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=
log=/var/log/mysql-general.log

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

然後我創建了文件並設置了權限:

# touch /var/log/mysql-general.log
# chown mysql. /var/log/mysql-general.log
# ls -l /var/log/mysql-general.log
-rw-r--r-- 1 mysql mysql 0 Jan 18 15:22 /var/log/mysql-general.log

但是當我啟動 mysqld 時,我得到:

120118 15:24:18  mysqld started
^G/usr/libexec/mysqld: File '/var/log/mysql-general.log' not found (Errcode: 13)
120118 15:24:18 [ERROR] Could not use /var/log/mysql-general.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
120118 15:24:18  InnoDB: Started; log sequence number 0 182917764
120118 15:24:18 [Note] /usr/libexec/mysqld: ready for connections.

誰能建議為什麼這不起作用?

“未找到”聽起來像是權限問題,即使您已授予 mysql 訪問該特定文件的權限,它也可能無權訪問/var/log. 嘗試將日誌文件放在 mysql 數據文件夾中,/var/lib/mysql/. 我試圖記住曾經在該路徑之外看到 mysql 日誌文件的案例。

如果您在 Ubuntu 上,如果您試圖將日誌文件放在 mysql 目錄之外(例如 /var/log/mysql),您可能會遇到此問題。要解決此問題,請將您的路徑添加到/etc/apparmor.d/usr.sbin.mysqld.

引用自:https://serverfault.com/questions/351062