MacPortsで入れたMySQLをログイン時に実行させる

ちゃんと設定していた気がするのに、今日会社のMacにログインしてみたらなぜかMySQLが起動していません。なぜかよく分からないけど、起動していないものは仕方がないのでさっさと設定をしてしまいます。で、ついでなのでMySQL 5.1系に変更も兼ねて、インストールからの作業ログをメモメモ。

portからインストール

MySQLパッケージの確認
~ > port search mysql
mysql3                         databases/mysql3 3.23.58      Multithreaded SQL database server
mysql4                         databases/mysql4 4.1.22       Multithreaded SQL database server
mysql5                         databases/mysql5 5.0.51a      Multithreaded SQL database server
mysql5-devel                   databases/mysql5-devel 5.1.24-rc    Multithreaded SQL database server
(以下略)

なんだかずらずらと出てきましたが、とりあえずMySQLサーバーはこの4つ。今回はMySQL 5.1系であるmysql5-develをインストールします。

variantsの確認
~ > port variants mysql5-devel
mysql5-devel has the variants:
  universal
  darwin_6
  darwin_8
  server: add a startup item
  innodb_plugin: Install the InnoDB plugin Early Adopter release 1.0

どうやら+serverを付けておけば自動で実行してくれる設定ファイルを出力してくれるっぽい。

インストール
~ > sudo port install mysql5-devel +server
--->  Fetching mysql5-devel
--->  Verifying checksum(s) for mysql5-devel
--->  Extracting mysql5-devel
--->  Configuring mysql5-devel
--->  Building mysql5-devel with target all
--->  Staging mysql5-devel into destroot
--->  Creating launchd control script
###########################################################
# A startup item has been generated that will aid in
# starting mysql5-devel with launchd. It is disabled
# by default. Execute the following command to start it,
# and to cause it to launch at startup:
#
# sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5-devel.plist
###########################################################
Warning: mysql5-devel requests to install files outside the common directory structure!
--->  Installing mysql5-devel 5.1.24-rc_0+server
******************************************************
* In order to setup the database, you might want to run
* sudo -u mysql mysql_install_db5
* if this is a new install
******************************************************
--->  Activating mysql5-devel 5.1.24-rc_0+server
--->  Cleaning mysql5-devel

インストールには結構時間がかかります。
終了後出力されたやつによると、コマンドをひとつ打っておく必要があるっぽい。

自動実行するように設定
~ > sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5-devel.plist

入力しても特に何か表示される訳ではありません。

確認
~ > mysql5 -u root

MacPortsでインストールしたMySQL 5.x系は、mysqlでなくてmysql5だったり、mysqladminでなくてmysqladmin5だったりします。面倒ですがaliasで変えるなりシンボリックリンク貼るなりしておいたほうが混乱は少ないかと。

おまけ、ソケットにアクセスできない!

~ > mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2)

ソケットにアクセスできない?なんでだろ。

そもそもファイルはあるのか。
~ > ls /opt/local/var/run/mysql5 

あれ、空だ。

所有権どうなってる?
~ > ls -al /opt/local/var/run
drwxr-xr-x  3 user  _mysql      102  6  9 10:13 mysql5

なぜか所有権がおいらのアカウントになっています。おそらくmysqlユーザーでないとダメだと思うので、変更しておく。

~ > sudo chown _mysql /opt/local/var/run/mysql5
リロードして接続してみる
~ > sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5-devel.plist
~ > sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5-devel.plist
~ > mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.24-rc Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> 

無事接続できましたとさ。