如何在OS X Yosemite/El Capitan上启动时自动加载MySQL

Jus*_*tin 76 mysql macos startup osx-yosemite osx-elcapitan

升级OS X后,我的MySQL安装在启动时停止加载.

这篇关于MySQL的演讲说:

"启动项安装将变量MYSQLCOM = -YES-添加到系统配置文件/ etc/hostconfig.如果要禁用MySQL的自动启动,请将此变量更改为MYSQLCOM = -NO-."

所以,我打开了那个文件,它说:

# This file is going away 
AFPSERVER=-NO- 
AUTHSERVER=-NO-
TIMESYNC=-NO-
QTSSERVER=-NO-
MYSQLCOM=-YES-
Run Code Online (Sandbox Code Playgroud)

我假设OSX开发者添加了# This file is going away但我不确定.

如果是这种情况,在OSX Yosemite上启动MySQL的正确方法是什么?

Jus*_*tin 169

这是修正它的原因:

首先,创建一个新文件:/Library/LaunchDaemons/com.mysql.mysql.plist

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <true />
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/mysql/bin/mysqld_safe</string>
      <string>--user=mysql</string>
    </array>        
  </dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

然后更新权限并将其添加到launchctl:

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于我,但在我的系统上,mysql用户实际上是`_mysql`.你可以运行`dscacheutil -q user | grep mysql`查看用户应该在您的系统上的内容. (14认同)
  • 作品!谢谢!您需要这个的原因是因为已从Yosemite中删除了StartupItems.Apple的文档解释了这篇文章的页面开头有一条说明(https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/StartupItems.html):``Startup物品是一种弃用的技术.在OS X的未来版本中,可以删除或消除通过此过程启动守护进程 (10认同)
  • 启动项是如何被弃用的技​​术?这个功能有什么替代品? (2认同)

Yeo*_*nho 15

如果您通过homebrew安装了mysql ,则可以launchd在登录时启动mysql:

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Run Code Online (Sandbox Code Playgroud)