cockscomblog?

cockscomb on hatena blog

brew servicesを使ってHomebrewでインストールしたMySQLを自動起動する

HomebrewでMySQLをインストールすると、post_installメッセージとして

To have launchd start mysql at login:
    ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
    mysql.server start

このように表示されます。ここには、launchdというOS Xの仕組みを使ってMySQLを自動的に起動するやり方と、手動で毎回起動するやり方が書いてあります。

launchdは、OS Xの根幹を為す仕組みのひとつで、特にコマンドラインからはlaunchctlコマンドを使ってやり取りします。Property List形式のファイルを特定のディレクトリ、この場合は~/Library/LaunchAgentsディレクトリに置いて(ソフトリンクして)、これをlaunchctl loadすることで、launchdを使ったMySQL自動起動ができるようになります。

さて、ではこの自動起動をやめたくなったときどうしたらよいかというと、launchctl unloadしてソフトリンクを消したら元通りになります。launchctlコマンドに十分精通していればこれくらい簡単ですし、いま起動している一覧なども得ることができます。他にもman launchctlすると大変詳しい説明を読むことができます。

brew services

ここまで読むと、OS Xは非常に優れたOSで、launchdの柔軟さやlaunchctlコマンドの使いやすいインターフェースにただ感謝、という気持ちになったことと思います。

そうは言っても、他人のMacパソコンに親切でMySQLの自動設定をしてあげるのには躊躇われるものがあります。相手がlaunchdに詳しければよいのですが、launchctl unloadなどを知らなければ二度と元に戻すことができないでしょう。

そこで今日はbrew servicesコマンドを紹介します。このコマンドでMySQL自動起動するには

brew services start mysql

とするだけです。いま自動起動の設定をしているもの一覧は

brew services list

自動起動を止めたければ

brew services stop mysql

これだけのコマンドで先ほどのlaunchctlと同等のことが行えます。この方法ならlaunchdの柔軟な仕組みについてあまり明るくなくてもMySQL自動起動ができて便利です。またhomebrew/versionsのmysql55などを使っていたとしても、brew services start mysql55とすればよいようです。

この方法であればlaunchctlでなんの設定をしたかを忘れることもなく、リラックスしてMacパソコンを利用することができるので安心です。

Homebrewはこのように便利な仕組みを(こっそり)用意してくれていて侮れないものがありますね。こちらからは以上です。

参考