RailsのDBをSQLiteからMySQLにする

Railsの標準DBはsqliteになってます。
SQ”Lite”ってぐらいですし、ちょっと大規模なものを作ろうとすると不安になりますよね。
そこで、より大規模になっても安心なMySQLに切り替えてみます。その手順。

まずMySQLを入れる

そもそも手元のMacにMySQLを入れてなかったので入れちゃいましょう。
http://www.mysql.com/downloads/
ここの「MySQL Community Server」から自分のPCにあったものをDL。(DLするにはmySQLのためにサイトで無料アカウントを作る必要があります。)
Dlしたものの中からmysql-5.5.24-osx10.6-x86_64.pkg的なのを実行してインストールします

インストールしたら起動しちゃいましょう。MySQL.prefPaneというのが上の画像に見えますよね。
それをダブルクリックすると設定からMySQLをいじれるようになります。こんな感じに

その他にあるMySQLを押すと下のような画面になります。まず start MySQL Serverを押しましょう。
そして runnningになったらOKです!
Mac起動時にMySQLを動かすにはAutomatically start mysql server on startup にチェックを入れます。

最後にbashprofileを編集します。シェルから mysqlとか打つだけで使えるようにするためです。
ホームフォルダの隠しファイルである「.bash_profile」を開いて

export PATH=$PATH:/usr/local/mysql/bin

と追記して保存。シェルから

source ~/.bash_profile

を打って反映させます。これでOK! mysqlと打って起動すれば問題ありません。
rootアカウントをパスワード込みで作っちゃいましょう

Railsで使うDBをつくる

SQLiteならConfig/database.yamlに正しい設定をするだけで***.sqliteのDBが作成されます。
が、MySQLは自分でDBを作る必要があります(多分)
ということで作っちゃいましょう

でパスワードを入力して入ります。そしてdevelopment用のDBを作り新しいアカウントにGRANTで権限を渡しましょう。
db: test_development
username: test
password: testpassword
としてこんなSQL文

これで test_developmentというDBができ、testユーザーがフルアクセスできる環境となりました。
あとはRailsでこのDBを使うように変更します

Railsの設定をする

やることは2つ gemfileにsqliteじゃなくてmysqlを使うように変更する。
database.yamlにmysqlとの接続設定をする。

まずgemfileを編集しましょう。

gem ‘sqlite3’

となってるところを

gem ‘mysql2’

に変更して保存。これだけ。

次に、接続設定。Railsのプロジェクトにあるgemfileを開くと各環境においてこんな風に
なってるはず。

これを、こんな風にします。

これでOK!試しにscaffoldやったところ。。。エラー。

こんなエラー。どうやらmysqlがみつかんないのかな。
解決策としては bash_profileに

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

これを追加してリロード。これで動きました!
scaffoldして rake db:migrate(これを忘れない) してrails sしてみましょう。動くはずです。

今回はdevelopmentだけですが、他の環境もDB作成から接続設定まで必要、
また、サーバーにDeployするなら向こうの設定も必要ですね。
以上です!

まとめ

・RailsでMySQLを使う場合dbを作成してアカウントにGRANTしておく
・Railsのgemfileでsqliteをmysql2に変更
・Railsのdatabase.yamlで接続設定をする

コメントを残す