48
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】【DB】database.yml

Last updated at Posted at 2020-03-25

#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ファイルが自動生成されています。

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名
48
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
55

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?