Answers:
如Chealion所述,可以通过多种方式安装mysql。每个都将您的数据目录和/或日志放置在不同的位置。以下命令将为您(和我们)很好地指示要看的地方。
ps auxww|grep [m]ysqld
# Putting brackets around the first char is a `grep`+`ps` trick
# to keep it from matching its own process.
# Note: For zsh compatibility put quotes around the grep regex
您可以在此处发布该命令的结果吗?我的看起来像这样:
_mysql 101 0.0 0.3 112104 13268 ?? S 12:30AM 0:13.20 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql --user=mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
root 76 0.0 0.0 600172 688 ?? S 12:30AM 0:00.02 /bin/sh /opt/local/lib/mysql/bin/mysqld_safe --datadir=/opt/local/var/db/mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
从中可以看到我的数据目录是/opt/local/var/db/mysql
(因为我是通过MacPorts安装的)。让我们进一步讲授这一课...
从第一行可以看到my守护进程是/opt/local/libexec/mysqld
。该mysqld
可被称为--verbose --help
后面将如果你启动mysqld的,而不是只检查帮助输出使用的值来获得的所有命令行选项的列表(在这里是最重要的/有价值的部分!)。这些值是编译时配置,my.cnf
文件和任何命令行选项的结果。我可以利用此功能来找出我的日志文件的确切位置,如下所示:
/opt/local/libexec/mysqld --verbose --help|grep '^log'
我的看起来像这样:
log /tmp/mysql.log
log-bin /tmp/mysql-bin
log-bin-index (No default value)
log-bin-trust-function-creators FALSE
log-bin-trust-routine-creators FALSE
log-error /tmp/mysql.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
瞧瞧!世界上的所有建议都不会对我有帮助,因为我的日志文件保存在完全不标准的位置!我留/tmp/
在我的,因为在我的笔记本电脑上,我不在乎(实际上我更喜欢)在重新启动时释放所有日志。
让我们放在一起,使您成为一体:
$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
执行该命令,您将获得正在运行的mysql实例的所有日志的列表。
请享用!
我对开放源代码的所有承诺都免费为您带来了这个Bash-Fu。
MySQL / MariaDB日志有3种类型:
log_error
用于错误消息日志;general_log_file
用于一般查询日志文件(如果由启用general_log
);slow_query_log_file
用于慢速查询日志文件(如果由启用slow_query_log
);通过此shell命令检查以上日志的设置和位置:
mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log
默认情况下,日志存储在您的数据目录中,因此请通过以下shell命令检查位置:
mysql -se "SELECT @@datadir"
要查看错误日志,可以运行:
sudo tail -f $(mysql -Nse "SELECT @@log_error")
如果启用了常规日志,要查看它,请运行:
sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
花了一段时间找到这个...尝试这个位置:'
sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
/usr/local/var/mysql/<USERNAME>.local.err
默认情况下,所有日志文件都在mysqld数据目录中创建。
来源:MySQL文档
您可以mysqlbinlog
用来读取/ usr / local / mysql / data /中的二进制日志文件(在我的安装中,并非全部都是二进制文件)。有些错误只是直接指向stderr,因此您可能也要检查/var/log/system.log
。
不使用sudo
以下命令,可能无法访问保存该日志的文件夹:
sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x--- 4 _mysql wheel 136 Jul 10 23:06 data
如果您偶然发现一个大的日志文件,并且在使用Time Machine时,您可能需要阅读Time Machine在做什么?服务器故障。
默认情况下,所有日志文件都在mysqld数据目录中创建。不幸的是,许多人没有将其日志文件(和程序)放在其典型位置。我就是其中之一!
我自己使用MySQL进行了此例程,直到尝试了Navicat for MySQL。后来我升级到Navicat Premium。两者都有一个监视工具,该工具包含一个选项卡,其中所有服务器变量都在一个综合列表中。这是带有log_error服务器变量的屏幕截图:
Navicat服务器监视工具中的log_error服务器变量
您也可以在列表中在那里设置变量。
干杯!
/图书馆/日志/MySQL.log
mysqladmin variables
现在是获取当前值而不是直接使用的首选命令mysqld