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

#1 楼

如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/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


LO AND BEHOLD!世界上的所有建议都不会对我有帮助,因为我的日志文件保存在完全不标准的位置!我将其保留在/tmp/中,因为我不在乎(实际上我更喜欢)在重新启动时丢失我的所有日​​志。

让我们将它们放在一起,使您成为一体吧:

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


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

享受吧!

我对开放源代码的所有承诺都免费为您带来了这个Bash-Fu。

评论


mysqladmin变量现在是获取当前值的首选命令,而不是直接使用mysqld

–约翰·卡明斯
17年5月2日在15:46

@JohnCummings,来源?

–起搏器
17年11月1日在18:00

今天,我没有任何评论而投了反对票。我保留所有答案。即使是10岁的孩子。您不是通过否决来帮助任何人。发表评论!

–布鲁诺·布鲁诺斯基(Bruno Bronosky)
18年6月29日在17:41

@ jm3关心详细吗?我不再有权访问MacOS。

–布鲁诺·布鲁诺斯基(Bruno Bronosky)
18/09/27在15:37

#2 楼

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)")


#3 楼

查找此信息的另一种方法是使用lsof。使用活动监视器来查找mysql的PID,或使用ps -ef | grep mysqld来查找它。
sudo lsof -p PID_OF_MYSQLD并查看MySQL已打开哪些文件。


评论


这是唯一对我有用的方法。 Mysql完全忽略了“ my.cnf”文件中的内容。

–布雷特·温劳布(Bret Weinraub)
20年12月8日,0:56

#4 楼

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

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err


评论


我的位于/usr/local/var/mysql/.local.err

– jonnysamps
18年8月31日在17:53

#5 楼


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


源:MySQL文档

您可以使用mysqlbinlog读取二进制文件/ usr / local / mysql / data /中的日志文件(在我的安装中,不是全部都是二进制文件)。有些错误只是直接指向stderr,因此您可能还需要检查/var/log/system.log

评论


我在mysql目录中没有数据目录。我在/ usr / local / mysql /目录中查找了所有内容,但是找不到日志。有没有办法查看mysql的配置?像phpinfo()

–托尼
09年7月19日在20:40

您是如何安装MySQL的?预先安装了Mac OS X Server,MacPorts或官方MySQL软件包的MySQL?

–欺诈
09年7月19日在23:29

#6 楼

不使用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在做什么?服务器出现故障。

评论


我在/ usr / local / mysql中没有数据目录

–托尼
09年7月19日在21:56

#7 楼

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

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

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



也可以在此处设置变量在列表中。

干杯!

#8 楼

/Library/Logs/MySQL.log

评论


我在那里看到其他日志,但没有mysql

–托尼
09年7月19日在20:41

这是什么版本的Mac OS X Server?通常,您需要在Mac OS X Server下查找/ var / log /和/ Library / Logs /。对于这个问题,请更具体地观看/var/log/system.log,在/ var / mysql中可能有一些用途(如.err日志文件),但是我(在Leopard Server的默认配置上)也具有上述/库/日志/MySQL.log。您是要通过套接字还是网络连接进行连接?如果是后者,您是否在Server Admin(在Leopard上;在Tiger中是/ Applications / Utilities中的一个单独的应用程序)中“启用网络连接”?

–摩根
09年7月20日在16:37