5
12

More than 3 years have passed since last update.

Rails Tutorialの知識から【ポートフォリオ】を作って勉強する話 #17.5 MySQL導入編

Last updated at Posted at 2020-01-19

こんな人におすすめ

  • プログラミング初心者でポートフォリオの作り方が分からない
  • Rails Tutorialをやってみたが理解することが難しい

前回:#17 VPC環境構築編
次回:#18 EC2環境構築, Nginx+Puma+Capistrano編

今回の流れ

  1. SQLite3からMySQLに変更する

この記事は、動画を観た時間を記録するアプリのポートフォリオです。
今回はRailsアプリのDBをSQLite3からAWSによるRDSのMySQLに変更します。
RDSはすでにAWSで作成しているものとします(詳しくは#17をご覧ください)。

SQLite3からRDSのMySQLに変更する

RailsアプリのDBをSQLite3からRDSのMySQLに変更します。

  • Gemfileを編集する
  • エンドポイントを確認する
  • database.ymlを編集する
  • RDS(MySQL)に接続する
  • DBを更新する

Gemfileを編集する

Gemfileから使っているDBを削除し、MySQLを入れます。

Gemfile
+ gem 'mysql2'

group :development, :test do
- gem 'sqlite3'
end

group :production do
- gem 'pg'
end
shell
$ bundle install

エンドポイントを確認する

RDSのエンドポイントはDBを設定する際に必要なので、確認します。

AWSにログイン → AWSマネジメントコンソール『RDS』
画面左のダッシュボード『データベース』 → 『自分のアプリ名』 → 下部タブ『接続とセキュリティ』のエンドポイントをコピー

database.ymlを編集する

DBの設定を編集します。

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: lantern(自分のアプリ名)
  pool: 5
  username: ①任意の名前
  password: ②任意のパスワード
  socket: /var/lib/mysql/mysql.sock
  host: コピーしたエンドポイント

development:
  <<: *default
  database: lantern_devlopment(自分のアプリ名)

test:
  <<: *default
  database: lantern_test(自分のアプリ名)

production:
  <<: *default
  database: lantern_production(自分のアプリ名)

RDS(MySQL)に接続する

RDS(MySQL)に接続します。

shell
$ mysql -h コピーしたエンドポイント -P 3306 -u ①任意の名前 -p
Enter password:②任意のパスワード

繋がらない場合は、一度MySQLを再起動します。

shell
$ sudo /etc/init.d/mysqld restart

その後はユーザーを作成し、ルート権限を与えます。

mysql
mysql> create user '①任意の名前'@'コピーしたエンドポイント' identified by '②任意のパスワード';
mysql> grant all on `%`.* to '①任意の名前'@'コピーしたエンドポイント' identified by '②任意のパスワード';

参考になりました↓
MySqlのソケットエラーを解決する
RailsのDBを(初めから| |後から)MySQLに変更する
RDSのMySQLでGRANT文が通らない

DBを更新する

後はいつも通り、DBを更新します。

shell
$ rails db:reset
$ rails db:migrate
$ rails db:seed

以上でMySQLの移行が完了しました。


前回:#17 VPC環境構築編
次回:#18 EC2環境構築, Nginx+Puma+Capistrano編

5
12
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
5
12