#database.yml
Railsにおけるデータベースの設定ファイル。
Railsアプリケーションを作成すると自動的に生成され、デフォルトではSQLiteを使用する前提で作成されます。
##MySQL用のdatabase.yml
MySQL等のSQLite以外のデータベースを使用する前提で生成する場合は、アプリケーションを作成する際に明示的にオプションでデータベースを指定します。
$ rails new アプリケーション名 -d データベース
$ rails new アプリケーション名 --database=データベース
使用可能なデータベースは下記になります。
「mysql / oracle / postgresql / sqlite3 / frontbase / ibm_db / sqlserver / jdbcmysql / jdbcsqlite3 / jdbcpostgresql / jdbc」
実際にRailsでアプリケーションを作成すると、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
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
database: sample_mysql_test
pool: 5
username: root
password:
host: localhost
production:
adapter: mysql2
encoding: utf8
database: sample_mysql_production
pool: 5
username: root
password:
host: localhost
上記の設定ファイルのコマンドはそれぞれ下記の意味を示しています。
adapter: 使用するデータベース種類
encoding: 文字コード
reconnect: 再接続するかどうか
database: データベース名
pool: コネクションプーリングで使用するコネクションの上限
username: ユーザー名
password: パスワード
host: MySQLが動作しているホスト名
MySQLでは特にホスト名、ユーザー名、パスワードの指定が必要になってます。
ユーザ名はデフォルトでroot
になっています。
##MySQL接続用のアカウント作成
MySQLではアカウント名、パスワード指定、ホスト名が必要になるのでそれぞれ設定していきます。
$ mysql -u root
:
:
mysql> create user 'ユーザー名'@'localhost' identified by 'パスワード';
mysql -u root
でMySQLに接続をしアカウント名、パスワード、ホスト名を設定しました。
mysql> select User,Host from mysql.user;
:
:
mysql> grant all on *.* to '[ユーザー名]'@'localhost';
select User,Host from mysql.user;
で作成されているかを確認し、grant all on *.* to '[ユーザー名]'@'localhost';
をしアカウントに権限を付与しました。
###database.ymlの書き換え
設定したアカウント名、パスワード、ホスト名に変更します。
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: [アプリ名]_development
pool: 5
username:設定したユーザー名
password:設定したパスワード
host: localhost
test:
adapter: mysql2
encoding: utf8
reconnect: false
database: [アプリ名]_test
pool: 5
username:設定したユーザー名
password:設定したパスワード
host: localhost
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: [アプリ名]_production
pool: 5
username:設定したユーザー名
password:設定したパスワード
host: localhost
これでMySQLにデータベース作成等の操作ができようになりました。
mysql> create database database名