こんな人におすすめ
- プログラミング初心者でポートフォリオの作り方が分からない
- Rails Tutorialをやってみたが理解することが難しい
前回:#17 VPC環境構築編
次回:#18 EC2環境構築, Nginx+Puma+Capistrano編
今回の流れ
- 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を入れます。
+ gem 'mysql2'
group :development, :test do
- gem 'sqlite3'
end
group :production do
- gem 'pg'
end
$ bundle install
エンドポイントを確認する
RDSのエンドポイントはDBを設定する際に必要なので、確認します。
AWSにログイン → AWSマネジメントコンソール『RDS』
画面左のダッシュボード『データベース』 → 『自分のアプリ名』 → 下部タブ『接続とセキュリティ』のエンドポイントをコピー
database.ymlを編集する
DBの設定を編集します。
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)に接続します。
$ mysql -h コピーしたエンドポイント -P 3306 -u ①任意の名前 -p
Enter password:②任意のパスワード
繋がらない場合は、一度MySQLを再起動します。
$ sudo /etc/init.d/mysqld restart
その後はユーザーを作成し、ルート権限を与えます。
mysql> create user '①任意の名前'@'コピーしたエンドポイント' identified by '②任意のパスワード';
mysql> grant all on `%`.* to '①任意の名前'@'コピーしたエンドポイント' identified by '②任意のパスワード';
参考になりました↓
MySqlのソケットエラーを解決する
RailsのDBを(初めから| |後から)MySQLに変更する
RDSのMySQLでGRANT文が通らない
DBを更新する
後はいつも通り、DBを更新します。
$ rails db:reset
$ rails db:migrate
$ rails db:seed
以上でMySQLの移行が完了しました。