【Rails】database.ymlにMySQLのパスワードを設定する方法!
こんにちは!
web系エンジニアとして自社開発企業への転職を目指して、
プログラミング学習中のsiです!
今回の記事ではdatabase.ymlでMySQLのパスワードを設定する方法について解説します!
以前、新規プロジェクトにてrails db:migrateを行った際に、
以下のようなエラーが出ました。
Mysql2::Error::ConnectionError: Access denied for user
'root'@'localhost' (using password: YES)
その際、database.ymlにMySQLのパスワードを設定することで解決出来たので、今回はその時の設定方法について記事にしてみました^ ^
※使用シェルはzshです
また、この記事で出てくる「%」はプロンプトなので実際に入力する必要はありません
マシンスペック
参考までに私のマシンスペックをご紹介しておきます。
- macOS Big Sur 11.5.1
- Macbook Pro(13-inch,2020,Four Thunderbolt 3 ports)
- intel Core i5
- メモリ 16GB
- ストレージ 512GB
- 使用シェル zsh
パスワード設定方法
以下のように、database.ymlのpassword欄にMySQLのパスワードを入力する。
開発環境の場合は「パスワードA」
本番環境の場合は「パスワードB」に入力する。
# database.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: パスワードA # ここ
socket: /tmp/mysql.sock
development:
<<: *default
database: アプリ名_development
test:
<<: *default
database: アプリ名_test
production:
<<: *default
database: アプリ名_production
username: アプリ名
password: パスワードB # ここ
しかし、database.ymlに直接パスワードを書いてしまっては、
セキュリティ上良くないので環境変数を使用して記述します。
以下の手順では、vimを使用します。
vimの操作について自信のない方は、ぜひこちらの過去記事を参考にしてみてください(^O^)/
1.まずvimで設定ファイルを開く
私の場合は.zshrcです^ ^
% vi .zshrc
2.末尾に、パスワードを環境変数に代入する記述を行う
export PASSWORD='MySQLで設定したパスワード'
3.設定ファイルに先程の記述を反映させる
% source ~/.zshrc
4.作業ディレクトリに移動後、
vimでdatabase.ymlを開く
% vi config/database.yml
5.以下のように追記する
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: <%= ENV["PASSWORD"] %> # ここ
socket: /tmp/mysql.sock
development:
<<: *default
database: アプリ名_development
test:
<<: *default
database: アプリ名_test
production:
<<: *default
database: アプリ名_production
username: アプリ名
password:
私はとりあえず、開発環境だけに記述しました^ ^
この後rails db:migrateを行って、無事成功すればOKです(^^)v
最後に
今回はrails db:migrate実行時のエラーについて解説しました!
今後も、エラー解決をどんどんしていって
着実にレベルアップしていきたいと思います(^O^)/
最後まで読んでいただきありがとうございます!
今後も、どんどん記事投稿を行なっていくので、
よければ、応援の方お願い致します(*^ω^*)
それでは!
参考記事