MacPortsを使ってMySQLをインストールする

今後は、MySQLは、MacPortsを使った方がバージョンアップが簡単にできるので、移行しちゃいます。

インストールは、以下の通り。

$ sudo port install mysql5 +server

起動、停止は以下のコマンドを使います。

$ sudo /opt/local/share/mysql5/mysql/mysql.server start
$ sudo /opt/local/share/mysql5/mysql/mysql.server stop

自動起動は、ローカル環境では必要ないので現時点では特に何もしません。(必要になったら後日調べます)

いくつかのディレクトリが作成およびパーミッションの設定を行う必要があるので、事前にやっておきます。

$ sudo mkdir /opt/local/var/db/mysql5/
$ sudo mkdir -p /opt/local/var/run/mysql5/
$ sudo chown mysql:mysql /opt/local/var/db/mysql5/
$ sudo chown mysql:mysql /opt/local/var/run/mysql5/

MySQLのシステムテーブルを作成します。

$ sudo -u mysql mysql_install_db5

MySQL Serverを起動します。

$ sudo /opt/local/share/mysql5/mysql/mysql.server start
Starting MySQL
... SUCCESS! 

rootのパスワードを忘れずに変更しておきます。

$ /opt/local/lib/mysql5/bin/mysqladmin -uroot password '************'

接続テストを行います。

$ /opt/local/lib/mysql5/bin/mysqladmin -uroot -h lucifer.local -p version
Enter password: 
/opt/local/lib/mysql5/bin/mysqladmin  Ver 8.42 Distrib 5.1.42, for apple-darwin10.2.0 on i386
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.1.42-log
Protocol version        10
Connection              lucifer.local via TCP/IP
TCP port                3306
Uptime:                 9 min 28 sec

Threads: 1  Questions: 7  Slow queries: 0  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.12

セキュアな環境を構築するためにやっておきます。(これは必須ではないです)

$ sudo /opt/local/lib/mysql5/bin/mysql_secure_installation 

MySQL(公式サイト配布版パッケージ)をアンインストールする

MySQLの公式サイト配布版パッケージが、Snow Leopardに対応していないようなので、アンインストールします。

手順は以下の通りになります。

$ sudo rm -rf /usr/local/mysql-5.1.28-rc-osx10.5-x86/
$ sudo rm -rf /Library/StartupItems/MySQLCOM/
$ sudo rm -rf /Library/Receipts/mysql-5.1.28-rc-osx10.5-x86.pkg/

あと /Library/PreferencePanes/MySQL.prefPane ファイルも削除すべきらしいけど、最初から見つからなかったので無視しました。

このままだと、System PreferencesにMySQLが残ってしまいます。気持ち悪いので、削除してしまいます。(コンテキストメニューから削除が選択できます)

MacPorts版MySQLを自動起動する

以下のサイトを見る限り、Mac OS X以降では、launchdを使って自動起動するのが流儀らしいみたいです。

具体的には、/Library/LaunchDaemons/ 以下にplistファイルを作成し、launchctlコマンドでplistファイルをロードします。

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

が、残念ながらMacPortsでインストール後には、該当のplistファイルが存在しなかったので、手動でplistファイルを用意します。

念のため /Library/LaunchDaemons/ 以下に配置されているplistファイルも確認してみます。ちょうどMacPortsにてインストールしたApache2用のplistファイルがあったので参考にします。

$ ls /Library/LaunchDaemons/ | egrep -e "apache2"
lrwxr-xr-x   1 root  wheel    76 12  1 00:36 org.macports.apache2.plist@ -> /opt/local/etc/LaunchDaemons/org.macports.apache2/org.macports.apache2.plist

/opt/local/etc/LaunchDaemons/ 以下にplistファイルを配置しているので、これも流儀にしたがっておきます。

嬉しいことにMySQL用のplistファイルを公開しているサイトがあるようなので、それをダウンロードして使います。

$ sudo mkdir -p /opt/local/etc/LaunchDaemons/org.macports.mysql5
$ cd /opt/local/etc/LaunchDaemons/org.macports.mysql5
$ sudo curl -O http://robwilkerson.org/_resources/hotlink/blog/mysql5.wrapper
$ sudo curl -O http://robwilkerson.org/_resources/hotlink/blog/org.macports.mysql5.plist
$ sudo chown root:wheel /opt/local/etc/LaunchDaemons/org.macports.mysql5/*
$ sudo chmod 755 /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper
$ sudo chmod 644 /opt/local/etc/LaunchDaemons/org.macports.mysql5/org.macports.mysql5.plist
$ sudo ln -s /opt/local/etc/LaunchDaemons/org.macports.mysql5/org.macports.mysql5.plist /Library/LaunchDaemons/org.macports.mysql5.plist

その後、マシンをリブートして自動起動していることを確認します。

$ ps ax | grep mysql
   51   ??  Ss     0:00.02 /opt/local/bin/daemondo --label=mysql5 --start-cmd /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper restart ; --pid=none
   67   ??  S      0:00.03 /bin/sh /opt/local/lib/mysql5/bin/mysqld_safe --datadir=/opt/local/var/db/mysql5 --pid-file=/opt/local/var/db/mysql5/localhost.pid
  165   ??  S      0:01.67 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql5 --user=_mysql --log-error=/opt/local/var/db/mysql5/localhost.err --pid-file=/opt/local/var/db/mysql5/localhost.pid --socket=/opt/local/var/run/mysql5/mysqld.sock --port=3306
  573 s000  U+     0:00.00 grep mysql