=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
参考链接:
- http://www.mednoter.com/launchd.html
- http://www.jianshu.com/p/e73978416920
- http://squll369.iteye.com/blog/1965185
- http://developer.apple.com/documentation/MacOSX/Conceptual/BPSystemStartup/index.html
- https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/Introduction.html
- https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html#//apple_ref/doc/uid/10000172i-SW7-BCIEDDBJ
- $ man launchd
=END=
《 “在Mac下安装MySQL并设置为开机启动” 》 有 4 条评论
BlockBlock – Objective-See 团队开发的一个工具,用于监控 macOS 平台软件安装自启动组件的行为
https://objective-see.com/products/blockblock.html
Mysql实时监控脚本
https://paper.tuisec.win/detail/1ed7c54caf91983
http://foreversong.cn/archives/1263
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
Homebrew 升级 4.0.0,麦金塔上的啤酒会更香吗?
https://sspai.com/post/78587
`
TL;DR
# The Good
* 软件信息存储方式从 git 仓库转向 JSON API,大幅改善了更新操作速度
* 引入了接管手动安装应用的 –adopt 选项、PKG 安装包等实用改进
# The Bad
* 没有改变过度分散的软件包维护流程,延伸到用户的信任模型
* 没有改变修改安装路径权限的暴力做法
# The Ugly
* 不懂啤酒术语就不配用吗?
==
相比之下,我对 Homebrew 的主要抱怨有点吹毛求疵——它似乎就是不愿意学会「好好说话」,仍然坚持用难懂的啤酒术语来命名各种功能和概念。
不知为何,这个项目对啤酒是如此执着,以至于官方《常见问答》的第一条问题竟然是一个啤酒黑话对照表。从好的方面说,对于新手上路、帮助理解,这种玩梗命名法或许能起到一定降低门槛的作用。但对于已经熟悉了其他包管理工具的用户,以及在上手之后的日常使用,你是更愿意看到这样的鬼话:
Homebrew 首先阅读配方(formula),如果有中意的瓶装版(bottle),就直接存入酒窖(cellar)里的加压桶(keg),然后倒(pour)给顾客。也可以从木桶(cask)里直接倒酒,或者从别人的酒头(tap)里打酒。
还是这样的人话:
Homebrew 首先读取软件包定义文件,如果有适用的预编译二进制文件,就下载到统一安装路径下以名称和版本命名的子目录,然后在 bin 目录中为其创建符号链接。也支持安装 macOS 原生应用,以及添加第三方软件仓库。
`