我的mysql在OS X上login在哪里?

我检查/ 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

    1. 使用Activity Monitor来查找mysql的PID,或使用ps -ef | grep mysqld ps -ef | grep mysqldfind它。

    2. 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? 在服务器故障。