如何启用MySQL日志logging?

我在OS X 10.6.1上运行MySQL 5.0.45,我无法让MySQLlogging任何东西。 我正在debugging一个应用程序,并需要查看所有查询和错误。

我添加到etc / my.cnf中:

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

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

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

运行:

 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) 

任何帮助我如何让MySQLlogin?

    即使您使用了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。

    然后,login到MySQL并运行:

     mysql> show variables like '%log%'; 

    查看general_loggeneral_log_fileloglog_error等的值

    根据需要打开它们,根据需要运行mysqladmin flushlogs

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

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

    日志将默认创build在保存数据库子目录(通常为/var/lib/mysql )的同一数据目录中,日志文件名默认为主机名,后跟与上述指令名相匹配的后缀。-bin,-slow-queries等)。

    要保持您的日志不同的path或使用不同的文件名,请在log=指令之后指定基本名称,以及任何您喜欢的path和文件名,例如:

     [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才能使这些更改生效。

    以前的答案是过时的。 您可以在/etc/my.cnf或Windows ./mysql/my.ini查看configuration文件。

    [mysqld]部分添加

     log_bin general_log log_error 

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

    此外,推荐的log选项会折旧并导致错误

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

    正在login./mysql/data/host.err和守护进程静静地死去。 正确的设置是general-log

    此外, log-slow-queries无效并导致错误

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

    所以一定要远离这一点。

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

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

    在我的情况下,如果我已经设置了相同的值这个variables没有关系! 另外,我改变了其他文章中提到的文件的权限和所有者。

    在my.cnf中尝试不同的日志设置。 在我的情况下,我需要:

     general_log = on general_log_file=/var/log/mysql/mysql.log