MySQL用のデータベース設定ファイル(database.yml)
Railsではデフォルトで設定されるSQLite以外でもMySQLやPostgreSQLといったデータベースを使用することができます。ここでは例としてMySQLを使用する場合に「database.yml」ファイルにどのように設定を記述すればいいのかについて解説します。
(Last modified: )
MySQL用の「config/database.yml」ファイル
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」アプリケーションを作成します。
データベース設定ファイルの「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のユーザー作成
今回はサンプル用にユーザーを作成しました。MySQLのユーザーを作成する方法の詳細については「ユーザーの作成」をご参照下さい。
まずrootユーザーでMySQLにログインします。
Railsアプリケーション用のユーザー「railsuser」を作成します(パスワードは「railspass」としました)。
次に権限を設定します。どのような権限が必要なのかはっきりと分からなかったため、グローバルレベルでALL権限を付与してあります。(この部分がはっきりと分かりましたら修正します)。
これで準備は完了です。では「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 )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。