NissyBlog

Life goes on.

Mac OS XでMySQLを自動起動させる方法

MySQL Serverを動かす

訳合って、ローカル環境にインストールしてあったMySQLを久しぶりに立ち上げる時がやってきました。
とりあえず、ローカル環境でこのコマンドを叩いてみると、

$ mysql -uroot -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

よく見覚えのあるエラーメッセージが出てきました。
すかさず、

$  mysql.server start
Starting MySQL
. SUCCESS!

このコマンドを叩くと

$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.21 Homebrew

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

無事、対話モードに入れました。
しかし、毎回忘れた頃にこの現象に遭遇した状態で、
都度ぐぐって対応するのはやる気をそがれてしまいます。

そこで、もう少し楽にMySQLを自動的に起動する方法を探してみようと思います。

ドキュメントを読む

まず、MySQLのドキュメントを確認します。
すると、MySQL を自動的に起動および停止するという章に以下の記述を見付けました。

OS X では、システム起動時の MySQL自動起動を有効にする別個の MySQL Startup Item パッケージをインストールします。Startup Item は mysql.server を実行することでサーバーを起動します。詳細はセクション2.4.4「MySQL 起動アイテムのインストール」を参照してください。MySQL Preference Pane でも、System Preferences を介して MySQL の起動と停止を制御できます。セクション2.4.5「MySQL Preference Pane のインストールと使用」を参照してください。

とい記述を発見しました。
丁寧な解説もあったのでこれで出来ると考えましたが、

$  mysql.server start

コマンドを叩くだけでも面倒臭い私は、もっと楽出来ないかと考えました。

launchdを使う

調べてみると、post-installメッセージにMySQLの起動の設定方法が書いてあるという記述があったので、その記述を元に下記コマンドを実行してlaunchdで動かしてみました。

$ ln -fs /usr/local/opt/mysql/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

こちらのコマンドですぐに起動させ、

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

実際に動いているかプロセスを確認してみます。

$ ps ax | grep mysql
21099 s000  S      0:00.02 /bin/sh /usr/local/Cellar/mysql/5.6.21/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/fl1-122-133-119-176.tky.mesh.ad.jp.pid
21197 s000  S      0:00.95 /usr/local/Cellar/mysql/5.6.21/bin/mysqld --basedir=/usr/local/Cellar/mysql/5.6.21 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.6.21/lib/plugin --log-error=/usr/local/var/mysql/fl1-122-133-119-176.tky.mesh.ad.jp.err --pid-file=/usr/local/var/mysql/fl1-122-133-119-176.tky.mesh.ad.jp.pid
21786 s000  S+     0:00.00 grep mysql

最後に、実際に動くかをもう一度確認してみます。

$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 55
Server version: 5.6.21 Homebrew

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

無事、起動することが出来ました。

※参考
MySQL :: MySQL 5.6 リファレンスマニュアル :: 2.10.1.2 MySQL を自動的に起動および停止する
HomebrewでインストールしたMySQLを自動起動させる(情報が古い) - ponkiti's blog
Mac(OS X)ではcronじゃなくてlaunchdでやる - Furudateのブログ
HomebrewでインストールしたMySQL,MongoDBを自動起動させる - Qiita