在Mac下安装MySQL并设置为开机启动


=Start=

缘由:

本地搭建环境需要MySQL,且频繁手动启动MySQL不太方便,所以在此记录一下安装MySQL和设置开机启动的方法。

正文:
# 用 Homebrew 安装MySQL
brew search mysql
brew info mysql
brew install mysql

# 手动启动MySQL
mysql.server start

# 为MySQL设置密码
mysql_secure_installation

# 登录MySQL
mysql -uroot -p

# 将MySQL设置为开机启动
brew services start mysql
# brew 在安装的时候已经为你写好了 .plist 文件。你只需要运行 `brew info mysql` 来查看帮助信息即可(同样适用于 redis/postgresql/mongo 等)。

查看一下 brew 提供的 .plist 文件:

# 列出所有 brew 提供的 .plist文件 及其对应的服务
brew services list

# 清除所有不用的服务
brew services cleanup

# 启动/重启 某个服务
brew services start/restart formula

下面以brew提供的mysql.plist文件为例学习一下「.plist文件」的编写方法:

$ cat ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>KeepAlive</key> //这个key表明你的daemon是按需启动还是需要一直运行
  <true/>
  <key>Label</key> //必须要有的key,下面的<string>为key对应的值,需要是唯一可辨识的
  <string>homebrew.mxcl.mysql</string>
  <key>ProgramArguments</key> //必须要有的key,下面的<array>为命令的路径和启动所需要的选项
  <array>
    <string>/usr/local/opt/mysql/bin/mysqld_safe</string>
    <string>--bind-address=127.0.0.1</string>
    <string>--datadir=/usr/local/var/mysql</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key> //官方文档推荐使用WorkingDirectory这个key来指定工作目录
  <string>/usr/local/var/mysql</string>
</dict>
</plist>

手动加载某个 .plist 文件:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

检查某个 .plist 文件的语法/格式是否正确:

sudo plutil -lint ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
参考链接:

=END=

, ,

《“在Mac下安装MySQL并设置为开机启动”》 有 3 条评论

  1. Mac上有些软件无法禁止开机启动怎么办?在“登陆项”里面没有它的选项,无法删去,比如Junos Pulse。
    https://www.zhihu.com/question/28268529
    `
    macOS 系统的启动项会以 .plist 的文件存在于以下目录中:
    * /Library/LaunchDaemons:系统启动时运行,用户不登录也会运行。
    * /Library/LaunchAgents:用户登录后运行。
    * ~/Library/LaunchAgents:用户自定义的用户启动项
    * /System/Library/LaunchDaemons:系统自带的启动项
    * /System/Library/LaunchAgents:系统自带的启动项

    每个 .plist 文件中,有 3 个属性控制着是否会开机自动启动。
    * KeepAlive:决定程序是否需要一直运行,如果是 false 则需要时才启动。默认 false
    * RunAtLoad:开机时是否运行。默认 false。
    * SuccessfulExit:此项为 true 时,程序正常退出时重启(即退出码为 0);为 false 时,程序非正常退出时重启。此项设置时会隐含默认 RunAtLoad = true,因为程序需要至少运行一次才能获得退出状态。

    所以其实针对这三项,不同的值有不同的表现:
    * 如果 KeepAlive = false:
    * 当 RunAtLoad = false 时:程序只有在有需要的时候运行。
    * 当 RunAtLoad = true 时:程序在启动时会运行一次,然后等待在有需要的时候运行。
    * 当 SuccessfulExit = true / false 时:不论 RunAtLoad 值是什么,都会在启动时运行一次。其后根据 SuccessfulExit 值来决定是否重启。

    * 如果 KeepAlive = true :
    * 不论 RunAtLoad/SuccessfulExit 值是什么,都会启动时运行且一直保持运行状态。

    如果不希望开机自动运行,则需要:
    1. 找到对应程序的 .plist 文件
    2. 删除 SuccessfulExit 属性。
    3. 将 RunAtLoad / KeepAlive 均设为
    `
    https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html
    https://developer.apple.com/library/archive/technotes/tn2083/_index.html

    开机启动项的管理
    https://wild-flame.github.io/guides/docs/mac-os-x-setup-guide/preference_and_settings/launch

发表评论

您的电子邮箱地址不会被公开。