macportsからHomebrewに乗り換えてMySQL5.1をインストールするまでの流れ

macportsで入れたアプリをlaunchctlからアンロードする

$ sudo launchctl list | grep port
79      -       org.macports.mysql5
80      -       org.macports.apache2


macportsで作られたplistは以下のディレクトリにある

  • /opt/local/etc/LaunchDaemons


アンロード

$ sudo launchctl unload ./org.macports.apache2/org.macports.apache2.plist
$ sudo launchctl unload ./org.macports.mysql5/org.macports.mysql5.plist

macportsディレクトリをmvする


完全削除はなんか怖いので、一旦ディレクトリをmvする

$ sudo mv /opt/local /opt/local_bak

Homebrewのインストール

$ ruby -e "$(curl -fsSkL https://raw.github.com/mxcl/homebrew/go)"

Xcodeコマンドラインツールのインストール


インストール時に入れろと警告が出たのでインストール

Xcodeのアップデート


その後こっちも警告が出たのでAppStoreから最新のを取得

/etc/path の修正


ローカルに入っているアプリの方が、Homebrewより優先されるので、/etc/pathを以下のように修正

  • Homebrewの/usr/local/binを先頭にする
$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin


.zshrcを修正してもできる

gitのインストール


Homebrewのシステムでgitを使っているので絶対に必要

$ brew install git

Homebrewの更新

$ brew update

MySQL5.1のインストール

#標準だと5.5系がインストールされるので、他のバージョンを入れるformulaを追加
$ brew tap homebrew/versions
# MySQL5.1をインストール
$ brew install mysql51


この後、インストール時の説明にしたがって、launchctlをロードするが
そのままだと、手動でMySQLを終了できなくなるので、.plistファイルを編集する必要がある

# 
$ mkdir -p ~/Library/LaunchAgents
$ cp /usr/local/Cellar/mysql51/5.1.67/com.mysql.mysqld.plist ~/Library/LaunchAgents/
$ launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist
$ launchctl list | grep sql
-       1       com.mysql.mysqld
# 初回設定
$ mysql_install_db --user=mysql --tmpdir=/tmp
# ルートパスワードの設定
$ /usr/local/Cellar/mysql51/5.1.67/bin/mysqladmin -u root password '*****'
# ログインしてみる
$ mysql -u root -p
  • tapは、formulaを追加するコマンド
  • いろんなサイトで、MySQL5.1を入れるときは、「brew install https://raw.github.com/adamv/homebrew-alt/master/versions/mysql51.rb」とあるけど、今は404になっているので使えない
    • オフィシャル側で用意してくれているのをtapする
    • brew versionsで出てくるMySQL5.1.56は、取得先にファイルが無いためにエラーになるので使わない

my.cnfの設定


クライアント、サーバそれぞれでutf8を使うように設定

ログを出すようにする

$ mkdir /var/log/mysql
$ sudo chown kasei_san /var/log/mysql
$ vim /usr/local/var/mysql/my.cnf
[mysqld]
log-error=/var/log/mysql/error.log
log=/var/log/mysql/query.log


ログローテーションは、newsyslogでできるらしい。そのうちやる?

その他メモ

再起動
mysql.server restart
my.cnfの場所
/usr/local/var/mysql/my.cnf

クライアント起動時に特定のデータベースにアクセス

$ mysql -u root -p -D test