Using MySQL as Rails3 database on CentOS 5.6
Rails3 で MySQL を使う場合の設定。ついこの間 stable release の最新である 3.0.7 の default adapter である mysql2 gem を使うことができなくなってしまったみたいなので mysql-ruby で代用する。
ちなみに Rails 3.1 は edge で使えるらしいのでそのうち release されて mysql2 を adapter として使うこともできるようになるんだろうけど、間が悪い。これは mysql2 gem がせっかちさんということでいいのかな。
以下、 adapter 変更も含めた MySQL を使う app の初期設定の流れ。先頭が # の command は root で、 > はそれ以外の user で打つ。
まず mysql-ruby adapter の install から。めんどくさいので root で直接 gem 叩いて system に install しちゃうけど Bundler 使うのでもおk。
次、実際の app の adapter を変更するところまで。
- > rails new appname -d mysql
- > cd appname
- > sed -i -e 's/mysql2/mysql/' Gemfile
- > sed -i -e 's/mysql2/mysql/g' config/database.yml
- > bundle check
これで MySQL につなぐことができるはず。
最後に MySQL に接続する user を変更する。 root のまま access するのはいろいろ危ない。以下 "appname" という user で "password" という password を使って接続する例。 先に database と user だけ手動で作ってしまう。先頭が $ の command は mysql client で打ち込む SQL ね。
- > mysql -u root -p
- $ CREATE DATABASE appname_development;
- $ CREATE DATABASE appname_test;
- $ CREATE DATABASE appname_production;
- $ GRANT ALL ON appname_development.* TO appname@localhost IDENTIFIED BY 'password';
- $ GRANT ALL ON appname_test.* TO appname@localhost IDENTIFIED BY 'password';
- $ GRANT ALL ON appname_production.* TO appname@localhost IDENTIFIED BY 'password';
- $ quit
- > sed -i -e 's/root/appname/g' config/database.yml
- "appname" という user で MySQL につなぐ設定
- > sed -i -e '/password:/s/:/: password/g' config/database.yml
- "password" という password を使ってねという設定
終了。