macOSX: 开机自动启动 MySQL

51
我刚刚通过Homebrew在终端中安装了MySQL。现在当我尝试连接MySQL时,它失败了,但是在运行mysqld后它就可以工作了。
所以我现在需要做的是在我的Mac启动时运行mysqld
我已经在Google上搜索了“mysqld autoload at startup”等,但没有找到正确的答案。
希望有人能指导我,谢谢!
7个回答

85

brew info mysql会给你加载MySQL启动的指令,但这里是你需要做的全部:

mkdir -p ~/Library/LaunchAgents
cp `brew --prefix mysql`/*mysql*.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/*mysql*.plist

我相信这只有在通过brew安装了mysql的情况下才是正确的,但如果你已经安装了,那就太好了! - joanwolk
9
在我最新的安装中,plist文件的名称是:homebrew.mxcl.mysql.plist。 - mtkopone
如果您已经安装了Mariadb,则文件名为:homebrew.mxcl.maraidb.plist。 - chhantyal
虽然这个答案在历史上是准确的,但更近期的 brew services start 命令是现代解决方案,比古老的 launchctl 更易使用。 - RonLugge
这个应该放在/Library/LaunchDaemons还是/Library/LaunchAgents?我认为应该放在后者。 - gone

35
现在,brew info mysql命令将输出以下内容:

要让launchd立即启动mysql并在登录时重新启动,请执行: brew services start mysql

或者,如果您不希望/不需要后台服务,只需运行: mysql.server start

因此,运行brew services start mysql命令将确保它作为服务运行,并在每次登录时重新启动。

如果您使用sudo运行该命令:

sudo brew services start mysql

这将使得服务在系统启动时运行,而不是在登录后运行,对服务器更加有用。


2
这是唯一一个真正回答问题并在启动时而非登录时启动服务器的答案。它在正确的位置创建了正确的.plist文件。尽管它实际上对我不起作用,但我认为这应该被标记为正确的答案...但我认为这是一个单独的问题。 - l008com
不允许使用sudo,因为“作为root运行Homebrew极其危险,不再受支持”。现在如何在启动时执行呢? - Oleksii Nezhyborets
似乎除非 root 拥有 brew 可执行文件,否则没有其他方法。您可能需要从其他答案中选择 LaunchDaemons 方法。依我之见,这是 Homebrew 中人们做出的最糟糕的决定。我们知道自己在做什么,至少应该有一个切换来禁用那个愚蠢的强制执行。 - Alejandro Iván

4

对我而言,Mipadi的答案在此帖发布时使用Homebrew安装的MySQL 5.6.13版本上失败了。但是,我按照他的建议检查了brew info mysql,并得到了一个可行的解决方案:

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

3
您不再需要设置plist文件。截至2017年10月,brew的最新版本(1.3.4),您只需运行以下命令即可自动启动服务:brew services start <service_name>,并且每次重新启动计算机时都会自动启动。使用brew info命令可以查看此信息。
以下是示例命令:

要立即启动mysql并在登录时重新启动,请执行以下操作: brew services start mysql 或者,如果您不需要后台服务,只需运行: mysql.server start


2
mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/mysql/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

2

以下是对无法在评论中发布的Alejandro的后续回复。

使用以下命令检查哪些服务是用户(登录)和根(启动)服务:

$ brew services list
Name       Status  User   Plist
chronograf started jacob  /Users/jacob/Library/LaunchAgents/homebrew.mxcl.chronograf.plist
grafana    started jacob  /Users/jacob/Library/LaunchAgents/homebrew.mxcl.grafana.plist
influxdb   started root   /Library/LaunchDaemons/homebrew.mxcl.influxdb.plist
kapacitor  stopped        
mariadb    started jacob  /Users/jacob/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
memcached  started jacob  /Users/jacob/Library/LaunchAgents/homebrew.mxcl.memcached.plist
telegraf   started jacob  /Users/jacob/Library/LaunchAgents/homebrew.mxcl.telegraf.plist

1

我已经使用brew安装了MYSQL。

键入

brew info mysql

请按照以下步骤操作:

让launchd在登录时启动mysql:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接