2019年01月15日

RailsとMySQLを連動させる方法(Mac編)

今回は、Ruby On RailsのデータベースにMySQLを設定する方法をご紹介します。

MySQLと連動させるためのRailsファイルの記述MySQLでの操作を見ていきましょう!

この記事の目次

  • 1.RailsアプリをMySQLで起動する
  • 2.MySQLでデータベースとユーザーを作成する
  • 3.Railsの設定ファイルを記述する
  • 4.まとめ

RailsアプリをMySQLで起動する

まず、始めにRailsコマンドを使ってデフォルトのDBをMySQLに指定します。

commandline
$ rails new {app-name} --database=mysql
$ rails new techdeeper --database=mysql

rails newコマンドでアプリケーションを作成する際に--database=オプションを使って

DBにMySQLを指定しましょう。

MySQLでデータベースとユーザーを作成する

MySQLの起動

commandline
$ mysql.server start
Starting MySQL
 SUCCESS!

MySQLの操作をするため、MySQLサーバーを起動しましょう。

MySQLへのログイン

commandline
$ mysql -u root

MySQLへrootユーザーとしてログインします。

パスワードを設定している場合は、-pオプションの追加が必要です。

データベースの作成

mysql
mysql> create database {database-name};
mysql> create database techdeeper_development;

MySQLデータベースを作成します。

データベースは基本的には{アプリ名+環境}で命名します。

ユーザーの作成

mysql
mysql> create '{user-name}'@'localhost' identified by '{password}';
mysql> grant all privileges on *.* to '{user-name}'@'localhost';    

以下はtechdeeperというユーザーでlocalhostにアクセスする場合のコマンドです。

mysql
mysql> create 'techdeeper'@'localhost' identified by '123456';
mysql> grant all privileges on *.* to 'techdeeper'@'localhost';

creatコマンドを使ってユーザーを作成します。

作成したユーザーに対して全ての権限を付与します。

Railsの設定ファイルを記述する

アプリケーション内のconfig/database.ymlを編集します。

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

development:
  <<: *default
  database: {app-name}_development

デフォルトではこのように記述されています。
この設定ファイルのusernamepassworddatabaseに変更を加えます。

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: techdeeper
  password: 123456
  socket: /tmp/mysql.sock

development:
  <<: *default
  database: techdeeper_development

先ほどMySQLで設定したものを記述してください。

commandline
$ rails db:migrate

コマンドを打ってエラーが表示されなければ連動完了です。

まとめ

長期的なアプリケーションの運用にはデータベースは不可欠です。
また、開発環境の構築でデータベースとの連携は欠かせないものとなるので慣れておきましょう。
ありがとうございました!