Rails データベース(MySQL)を新規作成する

Rails用にMySQLのデータベースを新規作成する手順を記載します。

ここでは、データベースの作成はMySQL Severで行い、Railsからは作成されたデータベースを使用する形を取ります。OSはUbuntu Server です。(rake db:createを使えばRailsからもデータベースを作れます)

次の流れで行います。

  1. Ubuntu ServerMySQL Serverをインストールする。
  2. MySQL ServerRails用のデータベースを新規作成する。
  3. RailsMySQLを扱えるようにするためのgemをインストールする。
  4. RailsからMySQLデータベースへアクセスするための情報を設定する。

Ubuntu Server に MySQL Serverをインストールする

次のようにmysql-serverをインストールします。rootパスワードを設定する画面が表示されたら任意のパスワードを入力します。

$ sudo apt-get install mysql-server libmysqlclient-dev

続いてMySQLを初期化します。

$ sudo mysql_install_db

インストール終了です。


Rails用にデータベースを新規作成する

MySQLへログインし、

$ mysql -u root -p

データベースを作ります。データベース名はsample _dbとします。

> create database sample_db;

続いて、このデータベース用のユーザとパスワードを作ります。ユーザ名はsample_user、パスワードはsample_passとします。

> grant all on sample_db.* to sample_user@loacalhost identified by 'sample_pass';

データベース一覧を表示して、新しいデータベースができていることを確認します。

> show databases;

ユーザ一覧も表示して、新しいユーザが出来ていることを確認します。

> select Host,User,Password from mysql.user;

MySQLをログオフします。

> quit;

データベースの作成終了です。


RailsにMySQLのgemを追加する

RailsでMySQLが使えるようにするため、gemfileを開き、

gem “mysql2”

を追加して、インストールします。

$ bundle install

gemの導入終了です。


RailsのデータベースをMySQLに切り替える

config/database.ymlを開き、データベースの接続先をデフォルトのSQLite3から先ほど作ったMySQLデータベースに切り替えます。

default: &default
  adapter: mysql2
  database: sample_db
  username: sample_user
  password: sample_pass
  host: 127.0.0.1
  encoding: utf8

development:
 <<: *default

test:
 <<: *default

production:
 <<: *default

次のコマンドで新しいデータベースを読み込む。

$ rake db:schema:load
$ rake db:seed

最後にマイグレーションする。

$ rake db:migrate

次のエラーが発生した。原因:MySQLでgrantするときに、`sample_user@localhost`とすべきところを`loacalhost`とスペル間違いをしていた。

Mysql2::Error: Access denied for user 'sample_user'@'localhost' (using password: YES)