macOSでMySQLを立ち上げようとすると、brew services start mysqlも見かけるし、mysql.server startも見かけるので、最初はどちらが何なのかかなり混乱しました。
どちらも結局MySQLサーバーを起動することには変わりませんが、誰がプロセスを管理するか、どんな状況で使いやすいかが違います。整理すると、こう理解するのが一番わかりやすかったです。
ふだんローカル開発用に常時起動しておくなら
brew services start mysql、必要なときだけ手動で起動・停止したいならmysql.server start
2つのコマンドの違いから見ると#
| 項目 | brew services start mysql | mysql.server start |
|---|---|---|
| 管理主体 | Homebrew + macOSのlaunchd | MySQLが提供するスクリプト |
| 起動方式 | バックグラウンドサービスとして登録して起動 | 手動起動 |
| 自動起動 | 可能 | 基本的になし |
| 管理コマンド | brew services list、stop、restart | mysql.server status、stop |
| 個人的なおすすめ状況 | ふだんのローカル開発用 | ちょっと起動して確認・テストするとき |
brew services start mysqlはいつ使うと便利か?#
HomebrewがmacOSのlaunchdにMySQLをサービスとして登録して管理する方式です。
一度起動しておいて継続的に使うならこちらのほうがはるかに楽です。ログイン後も再起動するように管理できますし、brew services listで他のローカルサービスと一緒に状態を確認できるので、管理自体がシンプルになります。
ローカルでMySQLをよく使う状況であれば、通常はこちらを先に使います。
brew services start mysql
brew services stop mysql
brew services restart mysql
brew services listメリットも明確です。
- 毎回ターミナルから手動で起動する必要がありません。
- Homebrewでインストールした他のサービスと一緒に管理しやすいです。
- ふだんの開発環境を維持するときの手間が減ります。
mysql.server startはいつ使う方がいいか?#
このコマンドは、MySQLが提供する起動スクリプトを直接呼び出す方式です。
サービス登録というより「今必要だから直接起動する」という感覚に近いです。そのため、自動起動よりも必要なときに起動して、終わったら止めるという流れに向いています。
mysql.server start
mysql.server stop
mysql.server statusこちらの方が使いやすい場面もあります。
- MySQLを常時起動しておく必要がないとき
- 起動と停止を自分で直接制御したいとき
- 起動状態を確認しながらテストや確認をするとき
ただし、インストール方法やPATHの設定によってはmysql.serverコマンドがすぐに認識されないケースもあります。その点まで考えると、Homebrewでインストールした環境ではbrew servicesの方が混乱しにくかったです。
ではmysqld_safeとは何か?#
ときどきmysqld_safe &のようなコマンドも一緒に見かけることがあります。
これはより低いレベルでMySQLデーモンを起動する方式で、mysql.serverが内部的に使用する側に近いです。ふだんのローカル開発では、このレベルまで直接触る機会はあまりありませんでした。
個人的にはこう区別するだけで十分でした。
- 常時使うローカルDBなら
brew services - ちょっと起動してテストするなら
mysql.server - 起動の流れを非常に直接的に制御したいときだけ
mysqld_safe
まとめ#
結論だけもう一度書くと、macOSでHomebrewからMySQLをインストールしたなら、通常はbrew services start mysqlが一番楽です。
逆に、MySQLをたまにしか使わなかったり、自分で起動・停止する流れの方が好みならmysql.server startでも十分です。
