我的 mysql 登录 OS X 在哪里?

Ton*_*ony 79 mysql log-files mac-osx

我检查了 /var/log 和 /usr/local/mysql ,但似乎找不到日志。我正在尝试解决使用 php 函数建立数据库连接的错误。

Bru*_*sky 100

正如 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
Run Code Online (Sandbox Code Playgroud)

你能在这里发布该命令的结果吗?我的看起来像这样:

_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
Run Code Online (Sandbox Code Playgroud)

从中你可以看到我的 datadir 是/opt/local/var/db/mysql(因为我是通过 MacPorts 安装的)。让我们更进一步地学习这个课程......

从第一行你可以看到 my daemon is /opt/local/libexec/mysqld. 该mysqld可被称为--verbose --help后面将如果你启动mysqld的,而不是只检查帮助输出使用的值来获得的所有命令行选项的列表(在这里是最重要的/有价值的部分!)。这些值是编译时配置、my.cnf文件和任何命令行选项的结果。我可以利用这个功能找出我的日志文件的确切位置,如下所示:

/opt/local/libexec/mysqld --verbose --help|grep '^log'
Run Code Online (Sandbox Code Playgroud)

我的看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

瞧!世界上所有的建议都不会帮助我,因为我的日志文件保存在一个完全非标准的位置!我保留我的,/tmp/因为在我的笔记本电脑上,我不在乎(实际上我更喜欢)在重新启动时丢失所有日志。

让我们把它们放在一起,让你成为一个单行者:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
Run Code Online (Sandbox Code Playgroud)

执行该命令,您将获得正在运行的 mysql 实例的所有日志的列表。

享受!

这个 Bash-Fu 是我对所有开源事物的承诺,免费为您带来的。

  • `mysqladmin variables` 现在是获取当前值的首选命令,而不是直接使用 `mysqld` (2认同)

ken*_*orb 15

MySQL/MariaDB 日志有 3 种类型:

通过此 shell 命令检查上述日志的设置和位置:

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log
Run Code Online (Sandbox Code Playgroud)

默认情况下,日志存储在您的数据目录中,因此请通过以下 shell 命令检查位置:

mysql -se "SELECT @@datadir"
Run Code Online (Sandbox Code Playgroud)

要查看错误日志,您可以运行:

sudo tail -f $(mysql -Nse "SELECT @@log_error")
Run Code Online (Sandbox Code Playgroud)

如果您启用了常规日志,要查看它,请运行:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
Run Code Online (Sandbox Code Playgroud)


tob*_*bym 11

查找此信息的另一种方法是使用lsof.

  1. 使用活动监视器查找 的 PID mysql,或使用ps -ef | grep mysqld查找它。

  2. sudo lsof -p PID_OF_MYSQLD 并查看 MySQL 打开了哪些文件。


小智 6

我花了一段时间才找到这个......试试这个位置:'

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
Run Code Online (Sandbox Code Playgroud)

  • 我的是在`/usr/local/var/mysql/<USERNAME>.local.err` (4认同)