MacPortsでインストールする方法MacPortsでMySQLをインストール -- BONNOH FRACTION 13や、pkgでインストールする方法素晴らしき哉、人生!: Mac OS 10.5にMySQLインストールを見てみたんですが、どうもこれらの方法では複数のMySQLを同居させるのがむずかしそうだったので、ソースからコンパイルして入れてみた。
そしてうまく複数のMySQLが動いたので、そのときのメモメモ。。。
ソースをダウンロードする
以下のリンクからtar.gzをダウンロードします。
今回僕はmysql-5.0.33をインストールしましたので、適宜自分のバージョンに置き換えて読んでいただけたらと思います。
MySQL :: Download MySQL Community Server
そして適当なディレクトリに解凍する。
tar zxvf mysql-5.0.33.tar.gz
Macだと基本的にmysql-5.0.33.tar.gzをダブルクリックすれば解凍ソフトが起動するので、ターミナルでなくてもOKだと思います。
今回は/usr/local/srcディレクトリに解凍しました。
そしてディレクトリに潜る。
cd mysql-5.0.33
コンパイルする
まずはconfigureを実行します。
このときのコンパイルオプションは結構重要で、とりあえず以下の感じに落ち着きました。
--with-mysqld-user=hogeのところは、Macにユーザ権限でmysqlをソースから(あと、DBD::mysqlも) - Born Neetを参考にして、今ログインしているユーザーを記述してみました。
--prefix=/usr/local/mysql3306は複数のMySQLを/usr/local/に同居させるので、mysqlの後に僕はport番号をサフィックスとして付与しています。
./configure --with-charset=utf8 --with-mysqld-user=hoge --with-unix-socket-path=/usr/local/mysql3306/var/mysql.sock --prefix=/usr/local/mysql3306 --with-blackhole-storage-engine --with-federated-storage-engine
configureがうまくいけば、あとはmakeで終わり。
make
make install
データベースを初期化する
/usr/local/mysql3306/bin/mysql_install_db --user=hoge
もしここで「unknown option '--skip-federated'」のようなエラーが出てしまう場合は、
以下のファイルの
/etc/my.cnf
この部分をコメントアウトしてください。
#skip-federated
[via]
mysql 5.1のmysql_install_dbがこける - うまい棒blog
初期化が終わるとデータディレクトリのvarが作成されます。
/usr/local/mysql3306/var/
そして今回の重要なポイントですが、MySQLを別ポートで複数起動するので、このmy.cnfが1つだとうまくいきません。
my.cnfにportを指定する箇所があるので、別々のMySQLは別々のmy.cnfを見に行って欲しいわけです。
なので、今回は
cp /etc/my.cnf /usr/local/mysql3306/var
を実行してmy.cnfをデータディレクトリにコピーしました。
これで順番的に自分自身のmy.cnfを見に行くようになります。
また、mysql.sockというMySQLが起動したときに作成されるファイルも別々にしたいので、これもデータディレクトリに作ってねっ!と記述しています。
一般的には/tmp/mysql.sockに作成されるようです。
[client]
default-character-set=utf8
#password = your_password
port = 3306
socket = /usr/local/mysql3306/var/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
port = 3306
socket = /usr/local/mysql3306/var/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
MySQLを起動する
起動コマンドは以下のとおり。
cd /usr/local/mysql3306/bin
./mysqld_safe &
これでバックグラウンドでMySQLが起動します。
ちょっと教えてもらった操作をメモ。
もし以下のように&を付けずに起動した場合、
./mysqld_safe
Ctrl + zで一旦プロセスを落として、
bg
と叩くと
./mysqld_safe &
をしたときと同じ動作になるみたい。
最後に、プロセスが立ち上がっているかを以下で確認する。
ps ax | grep mysql
MySQLを停止する
以下で止まる。
./mysqladmin shutdown --socket=/usr/local/mysql3306/var/mysql.sock
まとめ
これで、もうひとつmysqlを作りたい場合は、「コンパイルする」の部分から--prefixを変えて実行すればよい。
結構手順としては面倒だが、プロジェクトが複数のMySQLを必要としている場合に、この手順が参考になれば幸いです。
■関連リンク
・MySQL :: MySQL 5.1 リファレンスマニュアル :: 2.5 Mac OS X に MySQL をインストールする
・「Can't connect to local MySQL server through socket」エラーについて
・MySQL :: MySQL 4.1 リファレンスマニュアル :: 4.8.3 mysqld_multi(複数の MySQL サーバを管理するプログラム)
・MySQL / Mac OS X
・Macにユーザ権限でmysqlをソースから(あと、DBD::mysqlも) - Born Neet
・MySQL :: MySQL 4.1 リファレンスマニュアル :: 2.4.1 mysql_install_db の実行に関する問題
・1台のサーバに複数のMySQLをインストールしてみた。 | RwJ
・MySQL :: MySQL 5.1 リファレンスマニュアル :: 2.9.2 典型的な configure オプション
・MySQL :: MySQL 4.1 リファレンスマニュアル :: A.4.5 MySQL ソケットファイル /tmp/mysql.sock の保護または変更方法
- Newer: Macで半角カタカナを入力する方法
- Older: MacにImageMagickをインストールする方法
Trackback:0
- TrackBack URL for this entry
- http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1246
- Listed below are links to weblogs that reference
- Macに複数MySQLをインストールする方法 from HouseTect, JavaScriptな情報をあなたに





