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


77

升级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-

我假设OSX开发人员已添加,# This file is going away但我不确定。

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


您还能手动启动MySql吗?
帕克

我认为这个问题可能更适合“与众不同”
Barranka,2014年

3
从本质上讲,这不是编程问题,但是由于Mac主要用作个人计算机,因此可以说,试图在Mac上启动MySQL的绝大多数人都是开发人员。因此,这个问题可能与许多SO用户有关。
标准杆


1
@dcc这个问题/答案是重启后如何启动MySQL(因为GUI工具不会这样做)。我的问题是如何在OSX启动时使MySQL加载。
贾斯汀

Answers:


170

这是固定的原因:

首先,创建一个新文件:/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>

然后更新权限并将其添加到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

10
作品!谢谢!您之所以需要这样做,是因为那里的StartupItems已从优胜美地删除。苹果文档的页面开头一条注释对此进行了解释Startup items are a deprecated technology. Launching of daemons through this process may be removed or eliminated in a future release of OS X.
GuySoft 2014年

14
这也对我有用,但是在我的系统上,mysql用户实际上是_mysql。您可以运行dscacheutil -q user | grep mysql以查看用户在系统上应该是什么。
m14t

2
启动项如何成为过时的技术?该功能的替代品是什么?
亚伦·希尔

1
苹果在折旧通知中说,“改为使用已发布的工具。”
贾斯汀

1
我必须进行更改--user=my_user_name以使其起作用。
亚当·法里纳

16

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

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents

对于优胜美地或Capitan来说,这对我没有用。但是,@ Justin的答案有效。
davemyron '16

2

可接受的答案无法自动启动MySQL服务器(实际上,我每次在活动状态下尝试打开它时,“偏好设置”窗格都会崩溃“系统偏好设置”)。我按照MySQL 5.6手册中的说明进行操作,最终它再次自动启动!创建/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist具有以下内容的文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <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>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
            <string>--port=3306</string>
        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>

并在创建文件后运行以下命令:

cd /Library/LaunchDaemons
sudo chown root:wheel com.oracle.oss.mysql.mysqld.plist 
sudo chmod o-w com.oracle.oss.mysql.mysqld.plist 
sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist

1

我的Mac在El Capitan上运行。通过brew安装MySQL。

mysql.server status 

告诉我我有一些问题要解决:

ERROR! MySQL is not running, but PID file exists

homebrew.mxcl.mysql.plist/usr/local/Cellar/mysql/x.x.x/目录中找到文件并将其复制到/Library/LaunchDaemons/

sudo cp homebrew.mxcl.mysql.plist /Library/LaunchDaemons/homebrew.mxcl.mysql.plist

设置所有必要的权限:

sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/homebrew.mxcl.mysql.plist
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.mysql.plist

所用建议的一部分,由贾斯汀(Justin)描述


0

有一个bash脚本MacMiniVault,它会为你做这一点-安装MySQL为好。还有一篇文章介绍了该过程。

在文章中建议将脚本直接传送到Terminal并运行,但是由于这会带来严重的安全隐患,因此最好在本地运行脚本之前先下载并检查该脚本。

注意:已对有关遵循上述文章中的说明对安全性的评论进行了重新整理。通常,将管道脚本从未知来源直接传递到bash。另外,如果您不了解脚本或不信任作者,请不要使用它。


1
那就是修复它的方法-只需确保在删除之前删除所有现有的mysql数据即可:community.jaspersoft.com/wiki/uninstall-mysql-mac-os-x
maaalex 2015年

3
将shell脚本从未知来源直接引导到bash绝对不是一种好方法。
2015年

@par:是的,将来自未知来源的shell脚本直接传递到bash是个坏主意。然而,在这种情况下,shell脚本是开源的,可以在Github上进行检查...
Per Quested Aronsson

您假设显示源代码的服务器与将其提供给计算机的服务器相同。在像github这样的大型网站上,这几乎肯定不是一个有效的假设(即,可能涉及CDN),因此,是的,您确实希望将该URL视为未知来源。下载源代码,阅读它(更好的是,计算它的SHA1哈希值),并且只有在验证它的安装后才能下载。

1
我修改了原始答复,同时考虑到安全问题。
Per Quested Aronsson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.