Tony Asked: 2009-07-19 07:58:36 +0800 CST2009-07-19 07:58:36 +0800 CST 2009-07-19 07:58:36 +0800 CST 我在 OS X 上的 mysql 日志在哪里? 772 我检查了 /var/log 和 /usr/local/mysql ,但似乎找不到日志。我正在尝试解决使用 php 函数建立数据库连接的错误。 mysql mac-osx log-files 11 个回答 Voted Best Answer Bruno Bronosky 2009-07-21T09:06:48+08:002009-07-21T09:06:48+08:00 正如 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. 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 是我对所有开源事物的承诺免费带给你的。 kenorb 2016-06-10T07:09:27+08:002016-06-10T07:09:27+08:00 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)") tobym 2012-10-30T06:30:16+08:002012-10-30T06:30:16+08:00 查找此信息的另一种方法是使用lsof. 使用 Activity Monitor 查找 的 PID mysql,或使用ps -ef | grep mysqld查找。 sudo lsof -p PID_OF_MYSQLD并查看 MySQL 打开了哪些文件。 Mark Shust at M.academy 2012-07-26T07:32:43+08:002012-07-26T07:32:43+08:00 我花了一段时间才找到这个......试试这个位置:' sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err Chealion 2009-07-19T08:10:59+08:002009-07-19T08:10:59+08:00 默认情况下,所有日志文件都在 mysqld 数据目录中创建。 资料来源:MySQL 文档 您可以使用mysqlbinlog读取 /usr/local/mysql/data/ 中的二进制日志文件(在我的安装中,并非所有都是二进制文件)。有些错误只是直接指向 stderr,因此您可能也想检查一下/var/log/system.log。 Arjan 2009-07-19T08:59:46+08:002009-07-19T08:59:46+08:00 如果不使用以下命令,您可能无法访问保存该日志的文件夹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 是做什么的?关于服务器故障。 Rob Gravelle 2018-11-18T14:40:51+08:002018-11-18T14:40:51+08:00 默认情况下,所有日志文件都在 mysqld 数据目录中创建。不幸的是,许多人没有将他们的日志文件(和程序)放在他们的典型位置。我就是其中之一! 在我试用Navicat for MySQL之前,我自己使用 MySQL 完成了这个例程。后来我升级到Navicat Premium。两者都有一个监控工具,其中包含一个选项卡,其中包含一个综合列表中的所有服务器变量。这是带有 log_error 服务器变量的屏幕截图: Navicat 服务器监控工具中的 log_error 服务器变量 您还可以在列表中设置变量。 干杯! NSDB 2022-03-21T21:45:41+08:002022-03-21T21:45:41+08:00 打开系统偏好设置 在此处输入图像描述 选择 MySQL -> 配置 您的错误日志路径应该是可见的: 在此处输入图像描述 Arda Basoglu 2022-06-05T14:23:41+08:002022-06-05T14:23:41+08:00 尝试通过以下命令找到您的 mysql(或 mariadb)日志文件夹: locate local.err xgretsch 2022-07-19T06:18:22+08:002022-07-19T06:18:22+08:00 Bruno 批准的答案在 MacOS Monterey 上对我不起作用,无论如何,如果您的问题是没有 mysqld 进程,因为它在启动期间失败,它对您没有帮助。 但是,在这里关注其他一些使我能够找到错误日志: $ ls -l /usr/local/mysql lrwxr-xr-x 1 root wheel 26 18 Jul 13:39 /usr/local/mysql -> mysql-8.0.29-macos12-arm64 $ sudo ls -l /usr/local/mysql-8.0.29-macos12-arm64/data|grep err -rw-r----- 1 _mysql _mysql 3308 18 Jul 15:01 mysqld.local.err
正如 Chealion 所提到的,有几种方法可以安装您的 mysql。每个都将您的数据目录和/或日志放在不同的位置。以下命令将为您(和我们)提供一个很好的指示,以指示查看的位置。
您可以在这里发布该命令的结果吗?我的看起来像这样:
从那里你可以看到我的 datadir 是
/opt/local/var/db/mysql
(因为我是通过 MacPorts 安装的)。让我们更进一步地学习这一课......从第一行你可以看到我的守护进程是
/opt/local/libexec/mysqld
.mysqld
可以调用--verbose --help
以获取所有命令行选项的列表(这是重要/有价值的部分!),然后是启动 mysqld 而不是仅检查帮助输出时将使用的值。这些值是编译时配置、my.cnf
文件和任何命令行选项的结果。我可以利用这个特性来找出我的日志文件的确切位置,如下所示:我的看起来像这样:
瞧!世界上所有的建议都对我没有帮助,因为我的日志文件保存在一个完全非标准的位置!我保留我的,
/tmp/
因为在我的笔记本电脑上,我不在乎(实际上我更喜欢)在重新启动时丢失我的所有日志。让我们把它们放在一起,让你成为一个单行者:
执行该命令,您将获得正在运行的 mysql 实例的所有日志列表。
享受!
这个 Bash-Fu 是我对所有开源事物的承诺免费带给你的。
MySQL/MariaDB 日志有 3 种类型:
log_error
对于错误消息日志;general_log_file
用于一般查询日志文件(如果由 启用general_log
);slow_query_log_file
对于慢查询日志文件(如果启用slow_query_log
);通过此 shell 命令检查上述日志的设置和位置:
默认情况下,日志存储在您的数据目录中,因此请通过以下 shell 命令检查位置:
要查看错误日志,您可以运行:
如果您启用了常规日志,要查看它,请运行:
查找此信息的另一种方法是使用
lsof
.使用 Activity Monitor 查找 的 PID
mysql
,或使用ps -ef | grep mysqld
查找。sudo lsof -p PID_OF_MYSQLD
并查看 MySQL 打开了哪些文件。我花了一段时间才找到这个......试试这个位置:'
资料来源:MySQL 文档
您可以使用
mysqlbinlog
读取 /usr/local/mysql/data/ 中的二进制日志文件(在我的安装中,并非所有都是二进制文件)。有些错误只是直接指向 stderr,因此您可能也想检查一下/var/log/system.log
。如果不使用以下命令,您可能无法访问保存该日志的文件夹
sudo
:如果您碰巧发现了一个大型日志文件,并且在使用 Time Machine 时,您可能想阅读Time Machine 是做什么的?关于服务器故障。
默认情况下,所有日志文件都在 mysqld 数据目录中创建。不幸的是,许多人没有将他们的日志文件(和程序)放在他们的典型位置。我就是其中之一!
在我试用Navicat for MySQL之前,我自己使用 MySQL 完成了这个例程。后来我升级到Navicat Premium。两者都有一个监控工具,其中包含一个选项卡,其中包含一个综合列表中的所有服务器变量。这是带有 log_error 服务器变量的屏幕截图:
Navicat 服务器监控工具中的 log_error 服务器变量
您还可以在列表中设置变量。
干杯!
在此处输入图像描述
您的错误日志路径应该是可见的:
在此处输入图像描述
尝试通过以下命令找到您的 mysql(或 mariadb)日志文件夹:
Bruno 批准的答案在 MacOS Monterey 上对我不起作用,无论如何,如果您的问题是没有 mysqld 进程,因为它在启动期间失败,它对您没有帮助。
但是,在这里关注其他一些使我能够找到错误日志: