我检查/ var / log和/ usr / local / mysql,我似乎无法find日志。 我想解决一个错误,build立一个数据库连接与PHP函数。
正如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
从这里你可以看到我的datadir是/opt/local/var/db/mysql
(因为我通过MacPorts安装)。 我们再来看一下这一课。
从第一行可以看到我的守护进程是/opt/local/libexec/mysqld
。 可以使用--verbose --help
来调用mysqld
,以获得所有命令行选项的列表(这里是重要的/有价值的部分!),后面是如果启动mysqld时将使用的值,而不是仅仅检查帮助输出。 这些值是编译时configuration, my.cnf
文件和任何命令行选项的结果。 我可以利用这个functionfind我的日志文件的位置,就像这样:
/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
LO和BEHOLD! 所有的build议在世界上不会帮助我,因为我的日志文件被保存在一个完全不标准的位置! 我把它保存在/tmp/
因为在我的笔记本电脑上,我不在乎(实际上我更喜欢)在重新启动时将所有日志全部丢失。
我们把它放在一起,让你成为一个线上:
$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
执行那一个命令,你将得到你运行的mysql实例的所有日志列表。
请享用!
这个Bash-Fu给我带来了所有东西对开源的承诺。
另一种查找这些信息的方法是使用lsof
。
使用Activity Monitor来查找mysql
的PID,或使用ps -ef | grep mysqld
ps -ef | grep mysqld
find它。
sudo lsof -p PID_OF_MYSQLD
并查看MySQL打开了哪些文件。
有三种types的MySQL / MariaDB日志:
log_error
为错误消息日志; general_log
(如果由general_log
启用); slow_query_log
(如果由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)")
默认情况下,所有日志文件都是在mysqld数据目录中创build的。
来源: MySQL文档
您可以使用mysqlbinlog
来读取/ usr / local / mysql / data /中的二进制日志文件(在我的安装中不是所有的都是二进制文件)。 有些错误只是针对stderr,因此您可能还需要检查/var/log/system.log
。
花了一段时间find这个…试试这个位置:'
sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
/Library/Logs/MySQL.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
如果您碰巧find一个大的日志文件,并且在使用Time Machine时,您可能需要阅读什么是Time Machine? 在服务器故障。