在 OSX 上启用登录 my.cnf 无效

Enabling logging in my.cnf on OSX not working

急于求成,似乎找不到我的问题的答案。我是 运行 MYSQL 5.6.26 OSX Yosemite。我只是想启用我的查询记录。

我在 /usr/local/mysql 找到了 my.cnf 文件并添加了两个 [mysql] 下的行(我实际上不得不将它们键入而不是仅仅取消注释现有行):

general_log=1
general_log_file=/usr/local/mysql/mysql.log

在 my.cnf 上执行 ls -l 得到:

-rw-r--r--  1 root  wheel  1002 Nov 10 19:01 my.cnf

这看起来很奇怪。为什么 _mysql 不是所有者?

我首先尝试仅进行上述更改并通过系统偏好设置停止并重新启动 sql 服务器,但这不起作用。

我尝试将 my.cnf 的所有权更改为 _mysql,在目录 /usr/local/mysql 中创建 mysql.log 并将所有者 _mysql 也更改为徒劳无功。

有点疯狂,因为我觉得这不应该那么难。如何为 mysql 启用日志记录?

默认情况下,OSX 标准安装不使用配置文件。如果你想让服务器自动拿起一个,把它放到/etc(即/etc/my.cnf),它实际上最终在/private/etc/my.cnf,但那是透明的。

另一个选项是在服务器启动时指定选项文件(通过 --defaults-file 参数):

Mikes-MacBook-Pro:etc Mike$ ps aux | grep mysql

Mike 2055 0,0 0,1 3235892 7268 ?? S 2Nov15
1:41.22 /Users/Mike/sandboxes/5.7.5/bin/mysqld --defaults-file=/Users/Mike/sandboxes/msb_5_7_5/my.sandbox.cnf --basedir=/Users/Mike/sandboxes/5.7.5 --datadir=/Users/Mike/sandboxes/msb_5_7_5/data --plugin-dir=/Users/Mike/sandboxes/5.7.5/lib/plugin --user=Mike --log-error=/Users/Mike/sandboxes/msb_5_7_5/data/msandbox.err --pid-file=/Users/Mike/sandboxes/msb_5_7_5/data/mysql_sandbox5705.pid --socket=/var/folders/fv/13zbdzw17cdczn_rbnt5m_140000gn/T//mysql_sandbox5705.sock --port=5705

在听取了 John Elemans 的建议后,我使用了 mySQL workbench,打开了一个本地实例,在左侧是一个名为 'Instance' 的区域,其中有一个link 到 'Server Logs'。错误日志显示我在 my.cnf 中指定的日志文件不存在。所以我在 /usr/local/mysql 中创建了日志文件 mysql.log 并通过 WorkBench 重新启动了服务器。查看错误日志,抛出一条错误消息,提示 mysql 无法打开文件。检查权限,_mysql 不是所有者。所以我对日志文件进行了从 root 到 _mysql 的 chown,再次重新启动服务器,瞧,它开始工作了。谢谢大家。

不确定如何接受 John 的回答是正确的,所以我只 select 这个回答其他人的问题。

我在 mySQL 5.7 Community Edition 上尝试设置登录时遇到了这个 post。此版本附带一个启动守护程序 /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist,用于替换新安装的 my.cnf 文件。您可以将启动参数添加到 plist 文件以启用日志记录:

--log-output--general_logslow_query_log,例如:

<key>ProgramArguments</key>
    <array>
        <string>/usr/local/mysql/bin/mysqld</string>
        <string>--user=_mysql</string>
        <string>--basedir=/usr/local/mysql</string>
        <string>--datadir=/usr/local/mysql/data</string>
        <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
        <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
        <string>--log-output=FILE</string>
        <string>--general_log=/var/log/mysql/mysql.log</string>
        <string>--log-error=/var/log/mysql/mysql.err.log</string>
    </array>

可在以下位置找到更多信息:

https://dev.mysql.com/doc/refman/5.7/en/osx-installation-launchd.html https://dev.mysql.com/doc/refman/5.7/en/log-destinations.html