如何启用 MySQL 日志记录?

如何启用 MySQL 日志记录?

我在 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 进行日志记录,有什么帮助吗?

答案1

即使您使用了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_log查看、general_log_fileloglog_error等的值。

根据需要打开它们并运行mysqladmin 刷新日志如所须。

答案2

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

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

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

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

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

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

答案3

以前的答案已经过时了。您可以在/etc/my.cnfwindows 中或 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'

所以一定要远离那件事。

答案4

以超级权限进入mysql命令行,执行:

设置全局 general_log_file = '/var/log/mysql/mysql.log'; 

就我而言,即使我已经用相同的值设置了这个变量,也没关系!另外,我更改了文件的权限和所有者,如其他帖子中提到的那样。

相关内容