如何启用 MySQL 日志记录?

ryo*_*ife 36 mysql logging

我在 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
Run Code Online (Sandbox Code Playgroud)

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

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

跑步:

ps auxww|grep [m]ysqld
Run Code Online (Sandbox Code Playgroud)

返回:

_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
Run Code Online (Sandbox Code Playgroud)

并运行:

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

返回:

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
Run Code Online (Sandbox Code Playgroud)

跑步:

mysql> show variables like '%log%';
Run Code Online (Sandbox Code Playgroud)

返回:

+---------------------------------+---------------------------+
| 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)
Run Code Online (Sandbox Code Playgroud)

关于如何让 MySQL 登录的任何帮助?

ran*_*omx 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
Run Code Online (Sandbox Code Playgroud)

接下来,重新启动mysqld。

然后,登录到 mysql 并运行:

mysql> show variables like '%log%';
Run Code Online (Sandbox Code Playgroud)

看的价值观general_loggeneral_log_fileloglog_error,等。

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


gig*_*att 15

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

[mysqld]
log-bin
log
log-error
log-slow-queries
Run Code Online (Sandbox Code Playgroud)

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

要将日志保存在不同的路径中,或使用不同的文件名,请在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
Run Code Online (Sandbox Code Playgroud)

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


小智 5

以前的答案已经过时了。您可以/etc/my.cnf在 windows中或在 windows 上查看配置文件./mysql/my.ini

在该[mysqld]部分添加

log_bin
general_log
log_error
Run Code Online (Sandbox Code Playgroud)

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

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

ambiguous option '--log' (log-bin, log_slave_updates)
Run Code Online (Sandbox Code Playgroud)

正在登录,./mysql/data/host.err守护进程默默地死去。正确的设置是general-log

log-slow-queries无效并导致错误

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'
Run Code Online (Sandbox Code Playgroud)

所以一定要远离那个。