我在 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_file
、log
、log_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.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'
所以一定要远离那件事。
答案4
以超级权限进入mysql命令行,执行:
设置全局 general_log_file = '/var/log/mysql/mysql.log';
就我而言,即使我已经用相同的值设置了这个变量,也没关系!另外,我更改了文件的权限和所有者,如其他帖子中提到的那样。