はじめに
今回は、Mysqlのパスワードを変更したことにより、発生したエラーの解消方法についてまとめました。
※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。
この記事の目的
以下内容のアウトプット
- Mysqlのエラーとその解消方法
- database.ymlにMySQLのパスワードを設定する方法
開発環境
- Ruby 2.6.5
- Ruby on Rails 6.0.0
- MySQL 14.14
この記事の内容
- Mysqlのエラーの概要
- Mysqlのパスワードを確認
- database.ymlにMySQLのパスワードを設定
1. Mysqlのエラーの概要
Mysqlのパスワードを設定(変更)したことにより、ローカルでサーバを立ち上げた際にエラーが発生しました。
※エラー解消のプロセスでNOとYESのエラーに遭遇しましたが、最終的にエラー解消できました。
Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: NO)
Mysql2::Error::ConnectionError: Access denied for user 'root'@'localhost' (using password: YES)
-
エラーの内容
rootユーザのパスワードが正しくないため、データベースにアクセスできない。 -
エラーの原因
database.ymlのpasswordが設定できていなかったため。 -
エラーの解消
database.ymlにパスワードを追記する。
2. Mysqlのパスワードを確認
念の為、現在のパスワードが正しく登録できているか確認します。
手順
①mysql -u root -p
を実行する
②Enter password:
と出力されるのでパスワードを入力
③Welcome to the MySQL monitor...省略
と出力されたら成功
% mysql -u root -p
Enter password: # パスワードを入力する
3. database.ymlにMySQLのパスワードを設定
シェルを用いて環境変数を定義し、ymlファイルにパスワードを追記します。
手順
①vim ~/.zshrc
を実行
②iキー
をクリックし、インサートモードに移行
③zshの内部に、以下の記述を行う
export DATABASE_PASSWORD='先程確認したパスワード'
④escキー
をクリック → :wq
を入力 → Enterキー
をクリック
⑤source ~/.zshrc
を実行
⑥database.ymlにパスワードを追加する
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: <%= ENV['DATABASE_PASSWORD'] %> # 追記
socket: /tmp/mysql.sock
production:
<<: *default
database: XXX_production
username: XXX
password: <%= ENV['DATABASE_PASSWORD'] %> # 追記
rails db:migrate
を実行し、エラーが出なければ成功です。