3

不知道这里发生了什么,据我所知,一切都设置为应有的状态,但日志保持为空:

[root@myLaptop Me]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
log=/var/log/mysqld.general.log
general_log_file=/var/log/mysqld.general.log
pid-file=/var/run/mysqld/mysqld.pid
[root@myLaptop Me]# service mysqld stop
Redirecting to /bin/systemctl stop  mysqld.service
[root@myLaptop Me]# service mysqld start
Redirecting to /bin/systemctl start  mysqld.service
[root@myLaptop Me]# mysql -u root -p
Enter password: 
... Welcome stuff
Server version: 5.5.30 MySQL Community Server (GPL)
mysql> SET GLOBAL log_output = "FILE";SET GLOBAL general_log = 'ON';
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.05 sec)

mysql> SHOW PROCESSLIST;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
|  3 | root | localhost | NULL | Query   |    0 | NULL  | SHOW PROCESSLIST |
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)

mysql> quit
Bye
[root@myLaptop Me]# tail /var/log/mysqld.general.log 
[root@myLaptop Me]# <= shows nothing at all
[root@myLaptop Me]# ls -l /var/log/mysqld.general.log 
-rw-r--r--. 1 mysql mysql 0 May 31 10:06 /var/log/mysqld.general.log
[root@myLaptop Me]# tail /var/log/mysqld.log
130531 10:28:04 InnoDB: Completed initialization of buffer pool
130531 10:28:04 InnoDB: highest supported file format is Barracuda.
130531 10:28:04  InnoDB: Waiting for the background threads to start
130531 10:28:05 InnoDB: 5.5.30 started; log sequence number 2969208
130531 10:28:05 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130531 10:28:05 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130531 10:28:05 [Note] Server socket created on IP: '0.0.0.0'.
130531 10:28:05 [Note] Event Scheduler: Loaded 0 events
130531 10:28:05 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.30'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)

[更新]

我认为fedora 17使用覆盖my.cnf的参数启动mysql,日志不是my.cnf告诉它的位置:

[root@Laptop Symfony]# mysql -u root -p
mysql> select @@global.general_log_file;
+----------------------------+
| @@global.general_log_file  |
+----------------------------+
| /var/lib/mysql/Laptop.log |
+----------------------------+
4

2 回答 2

3

首先,我会检查日志记录选项

在我的服务器上,我总是在其中创建一个新目录/var/log并将其“提供”给mysql(以root身份或通过sudo执行)

sudo mkdir /var/log/mysql
sudo chown mysql:mysql /var/log/mysql

那么my.cnf中的所有日志记录选项都是该目录中的一个文件

log=/var/log/mysql/general.log
log-error=/var/log/mysql/error.log
log-slow-queries=/var/log/mysql/slowquery.log

可以肯定的是,在任何情况下,mysql都可以创建和访问这些文件。此外,它有助于一次访问所有mysql日志文件,因为该目录非常忙于处理许多与mysql/var/log无关的事情。

那么,作为当前日志文件为空的原因,可能是在查看文件的时候缓存了一些日志信息。要强制mysql写入文件(或底层 IO 库)以使文本从mysql外部可见(即tail),您可以执行(mysql 命令)

FLUSH LOGS;

有一篇关于空日志文件的有趣文章。

于 2013-05-31T04:04:14.343 回答
2

确保变量:general_log=ON,如果这个变量为“OFF”,mysql不会打印任何东西到general_log文件。

您可以检查 mysql 错误日志文件以查找是否发生任何错误

于 2013-09-30T02:56:03.657 回答