メインコンテンツへスキップ
  1. Posts/

macOSでMySQLを起動するときの`brew services`と`mysql.server`の違い

·3 分
NineKoo9
著者
NineKoo9
目次

macOSでMySQLを立ち上げようとすると、brew services start mysqlも見かけるし、mysql.server startも見かけるので、最初はどちらが何なのかかなり混乱しました。

どちらも結局MySQLサーバーを起動することには変わりませんが、誰がプロセスを管理するか、どんな状況で使いやすいかが違います。整理すると、こう理解するのが一番わかりやすかったです。

ふだんローカル開発用に常時起動しておくならbrew services start mysql、必要なときだけ手動で起動・停止したいならmysql.server start


2つのコマンドの違いから見ると
#

項目brew services start mysqlmysql.server start
管理主体Homebrew + macOSのlaunchdMySQLが提供するスクリプト
起動方式バックグラウンドサービスとして登録して起動手動起動
自動起動可能基本的になし
管理コマンドbrew services liststoprestartmysql.server statusstop
個人的なおすすめ状況ふだんのローカル開発用ちょっと起動して確認・テストするとき

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でも十分です。