Rails用にMySQLのデータベースを新規作成する手順を記載します。
ここでは、データベースの作成はMySQL Severで行い、Railsからは作成されたデータベースを使用する形を取ります。OSはUbuntu Server です。(rake db:createを使えばRailsからもデータベースを作れます)
次の流れで行います。
- Ubuntu ServerにMySQL Serverをインストールする。
- MySQL ServerでRails用のデータベースを新規作成する。
- RailsでMySQLを扱えるようにするためのgemをインストールする。
- 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)