MySQL用のデータベース設定ファイル(database.yml)

広告

Railsではデフォルトで設定されるSQLite以外でもMySQLやPostgreSQLといったデータベースを使用することができます。ここでは例としてMySQLを使用する場合に「database.yml」ファイルにどのように設定を記述すればいいのかについて解説します。

1.MySQL用の「config/database.yml」ファイル
2.MySQLのユーザー作成

Railsのアプリケーションを作成すると自動的に「database.yml」ファイルが作成されデフォルトの設定が記述されます。特に指定しない場合はSQLiteを使う前提で作成されるため、他のデータベースを使用する場合はRailsのアプリケーションを作成する時にオプションでデータベースを指定します。

rails new アプリケーション名 -d データベース
rails new アプリケーション名 --database=データベース

指定可能なデータベースは「mysql / oracle / postgresql / sqlite3 / frontbase / ibm_db / sqlserver / jdbcmysql / jdbcsqlite3 / jdbcpostgresql / jdbc」です。

では実際に試してみます。次のようにテスト用の「sample_mysql」アプリケーションを作成します。

p2-1

p2-2

データベース設定ファイルの「config/database.yml」ファイルも作成されていますのでテキストエディタで開いてみます。

# MySQL.  Versions 4.1 and 5.0 are recommended.
# 
# Install the MYSQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: sample_mysql_development
  pool: 5
  username: root
  password:
  host: localhost

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: sample_mysql_test
  pool: 5
  username: root
  password:
  host: localhost

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: sample_mysql_production
  pool: 5
  username: root
  password:
  host: localhost

オプションで指定したMySQLを利用するためのデフォルトの設定が記載されています。development(開発用)、test(テスト用)、production(本番用)の3つに分かれている点はSQLiteの場合と同じですが設定項目は少し異なります。

adapter:   使用するデータベース種類
encoding:  文字コード
reconnect: 再接続するかどうか
database:  データベース名
pool:      コネクションプーリングで使用するコネクションの上限
username:  ユーザー名
password:  パスワード
host:      MySQLが動作しているホスト名

MySQLの場合は特にホスト名、ユーザー名、パスワードの指定が必要です。ユーザー名はデフォルトで「root」になっていますが、データベース作成の権限があるユーザーをあらかじめMySQLに作成しておき、そのユーザー名とパスワードを指定しても結構です。

今回はサンプル用にユーザーを作成しました。MySQLのユーザーを作成する方法の詳細については「ユーザーの作成」をご参照下さい。

まずrootユーザーでMySQLにログインします。

p2-3

Railsアプリケーション用のユーザー「railsuser」を作成します(パスワードは「railspass」としました)。

p2-4

次に権限を設定します。どのような権限が必要なのかはっきりと分からなかったため、グローバルレベルでALL権限を付与してあります。(この部分がはっきりと分かりましたら修正します)。

p2-5

これで準備は完了です。では「config/database.yml」ファイルを次のように修正しておきます。

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: sample_mysql_development
  pool: 5
  username: railsuser
  password: railspass
  host: localhost

test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: sample_mysql_test
  pool: 5
  username: railsuser
  password: railspass
  host: localhost

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: sample_mysql_production
  pool: 5
  username: railsuser
  password: railspass
  host: localhost

ご自身の環境に合わせて「host」を変更し、また必要であれば「database」も変更しておいて下さい。

( Written by Tatsuo Ikura )