在OSX上启用my.cnf中的日志记录无法正常工作

时间:2015-11-11 00:42:51

标签: mysql macos mysql-workbench logfile my.cnf

拔出我的头发似乎无法找到我的问题的答案。我在OSX Yosemite上运行MYSQL 5.6.26。我只是想尝试记录我的查询。

我已将my.cnf文件放在/ usr / local / mysql中并添加了两个 [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 server,但这不起作用。

我已经尝试将my.cnf的所有权更改为_mysql,在目录/ usr / local / mysql中创建mysql.log并使所有者_mysql也无济于事。

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

3 个答案:

答案 0 :(得分:2)

我在尝试设置mySQL 5.7 Community Edition上的日志时遇到了这篇文章。此版本附带一个启动守护程序/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

答案 1 :(得分:0)

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

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

  

Mikes-MacBook-Pro:等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 = /用户/ Mike / sandboxes / msb_5_7_5 / data / mysql_sandbox5705.pid --socket = / var / folders / fv / 13zbdzw17cdczn_rbnt5m_140000gn / T // mysql_sandbox5705.sock       --port = 5705

答案 2 :(得分:0)

在接受了John Elemans的建议后,我使用了mySQL工作台,打开了一个本地实例,在左侧是一个名为“Instance”的区域,其中包含指向“Server Logs”的链接。错误日志显示我在my.cnf中指定的日志文件不存在。所以我在/ usr / local / mysql中创建了日志文件mysql.log,并通过WorkBench重新启动了服务器。查看错误日志并抛出错误,说mysql无法打开文件。已检查的权限和_mysql不是所有者。所以我从root到_mysql为日志文件做了一个chown,重新启动了服务器,然后瞧'...它正在工作。谢谢大家。

不确定如何接受John的回答是正确的,所以我只选择这个,因为它为其他人解决了问题。

相关问题