it-swarm.cn

我的mysql在OS X上的登录位置在哪里?

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

74
Tony

如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安装的)。让我们进一步讲授这一课...

从第一行可以看到我的守护进程是/opt/local/libexec/mysqldmysqld可以用--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通过我对所有开源的承诺免费为您带来。

94
Bruno Bronosky

MySQL/MariaDB日志有3种类型:

通过此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)")
13
kenorb

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

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

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

10
tobym

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

Sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
6
Mark Shust

默认情况下,所有日志文件都在mysqld数据目录中创建。

资料来源: MySQL文档

您可以使用mysqlbinlog来读取/ usr/local/mysql/data /中的二进制日志文件(在我的安装中,并非全部都是二进制文件)。有些错误仅针对stderr,因此您可能需要检查/var/log/system.log

3
Chealion

如果不使用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时,您可能需要阅读Server Fault上的 Time Machine在做什么?

0
Arjan

默认情况下,所有日志文件都在mysqld数据目录中创建。不幸的是,许多人没有将其日志文件(和程序)放置在其典型位置。我就是其中之一!

我自己使用MySQL进行了此例程,直到尝试了 用于MySQL的Navicat 。后来我升级到 Navicat Premium 。两者都有一个监视工具,该工具包含一个选项卡,其中所有服务器变量都在一个综合列表中。这是带有log_error服务器变量的屏幕截图:

Navicat服务器监控工具中的log_error服务器变量

log_error server variable in Navicat Server Monitoring Tool

您也可以在列表中在那里设置变量。

干杯!

0
Rob Gravelle