niki12260714の日記

フリーランスのITエンジニアの呟き。

AWS Cloud9でMySQLに乗り換える

諸事情により、ポスグレからMySQLにDBを変更することになり、開発環境のDBを変えることになりました。
その手順です。

※2018/7/30現在、AWS Cloud9には、MySQLが標準でインストールされているので、インストール作業は飛ばします

MySQLにデータベースを作る】

参考にしたのはこちら。

qiita.com1.文字コードを修正する
「sudo vi /etc/my.cnf」で、my.confに「character-set-server=utf8mb4」を追加
※sudoでやらないと権限足りなくて書き込みできませんでした
2.開発用、テスト用、本番用のデータベースを作る
mysql -uroot」でmysqlに入り、「create database DB名;」でそれぞれデータベースを作成
3.接続用のユーザーを作成し、作成したデータベースへの権限を不要
「create user 'ユーザー名'@'localhost' identified by 'パスワード';」でユーザー作成
「grant all on DB名.* to 'ユーザー名'@'localhost' identified by '接続パスワード';」

MySQLのgemを入れる】

Gemfileに「gem 'mysql2'」を追加、「bundle install」
→失敗する。
 「Gem::Ext::BuildError: ERROR: Failed to build gem native extension.」の表示
ぐぐってみると、こちらの記事がヒット。

kzy52.com

「sudo yum -y install mysql-devel」を実施後、「bundle install」「bundle update」でエラーが発生しなくなる

【database.ymlを修正】

こちらの記事の設定をそのまま使わせていただきました。

www.rubylife.jp

【DB作成しなおし】

「bundle exec rake db:migrate」を実行。
→エラー発生、「NoMethodError: undefined method `inet' for #<ActiveRecord(略」が発生
ぐぐると、こちらの記事がヒット。

programming-beginner-zeroichi.jpまったく同じ状態だったので、inetをstringに修正、再度「bundle exec rake db:migrate」を実施、成功。

ここまで来たら、「rails s -b $IP -p $PORT」でrails serverを起動し、ログイン画面を表示させ、ログインを試しました。
当然ユーザーがいないので蹴られます。
DBにユーザーを問い合わせられる(接続が確立している)、ユーザーがいない(新しいDBを見に行っている)から、成功していると判断。
以上終了です。