如何启用MySQL日志记录?


36

我在OS X 10.6.1上运行MySQL 5.0.45,但我无法使MySQL记录任何内容。我正在调试应用程序,需要查看所有查询和错误。

我添加到etc / my.cnf:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

我使用sudo创建了两个日志文件,将权限设置为644,然后重新启动了MySQL。

我提到了OS X上的mysql日志在哪里?为了排除故障。

运行:

ps auxww|grep [m]ysqld

返回值:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

并运行:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

返回值:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

运行:

mysql> show variables like '%log%';

返回值:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

关于如何获取MySQL日志的任何帮助?

Answers:


23

即使使用chmod 644,也请确保mysql是日志的所有者。

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

接下来,重新启动mysqld。

然后,登录到mysql并运行:

mysql> show variables like '%log%';

看的价值观general_loggeneral_log_fileloglog_error,等。

根据需要将其打开,并根据需要运行mysqladmin flushlogs


现在正在记录。一定是所有权监督。虽然,请参阅我编辑过的问题,以获取“显示变量,例如'%log%'”查询的结果。MySQL正在登录到/var/log/mysql.log,所以为什么不显示呢?
RyOnLife

13

要启用日志文件,您需要确保以下一个或多个指令位于[mysqld]您的mysql服务器的主要配置文件(/etc/my.cnf位于我的服务器上)的部分中:

[mysqld]
log-bin
log
log-error
log-slow-queries

默认情况下,日志将在包含数据库子目录本身的同一数据目录中创建(通常为/var/lib/mysql),日志文件名默认为主机名,后跟与上述指令名匹配的后缀(例如-bin,-slow -查询等)。

要将日志保留在其他路径中或使用不同的文件名,请在log=指令后指定基本名称,以及您喜欢的任何路径和文件名,例如:

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

您需要重新启动mysqld才能使这些更改生效。


5

先前的答案已过期。您可以/etc/my.cnf在Windows或Windows中查看配置文件./mysql/my.ini

在该[mysqld]部分中添加

log_bin
general_log
log_error

Windows文档指出日志存储在中ProgramData/MySQL/MySQL Server 5.6/。忽略它,因为它是谎言。

此外,建议的log选项已贬值并导致错误

ambiguous option '--log' (log-bin, log_slave_updates)

被登录后./mysql/data/host.err,守护程序会静默地死去。正确的设置是general-log

log-slow-queries无效并引起错误

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

因此,一定要远离它。


谢谢!我无法使用该log=选项启动服务器,并且可以终生找出原因。最后有人回答。general-log
jiveturkey

2

输入具有超级权限的mysql命令行并执行:

SET GLOBAL general_log_file ='/var/log/mysql/mysql.log'; 

就我而言,这是否已将变量设置为相同的值并不重要!另外,如其他帖子所述,我更改了文件的权限和所有者。


1

在my.cnf中尝试其他日志设置。就我而言,我需要:

general_log = on

general_log_file=/var/log/mysql/mysql.log
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.