エラー発生から解決まで
(1)SequelProに入れない(添付写真1枚目)
MySQL の応答: Your password has expired. To log in you must change it using a client that supports expired passwords.
やったこと
①mysqlパスワードが期限切れになっていると想定 (参考: https://pqtomblog.com/2018/09/20/connecting_mysql_by_sequelpro/ )
なるほどパスワードを変更すれば良いのか。
mysqlにログイン後、下記コマンドでパスワードを“XXXX”に変更
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY "XXXX";
→変更完了。
mysql> ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY "XXXX"; Query OK, 0 rows affected (0.01 sec)
②その後、パスワードをうってmysqlへログインできることを確認
$ mysql -u root -p Enter password: # <= ここでパスワードを入力した
③railsを立ち上げてlocalhost:8080を確認するもエラー発生
(2)Access denied for user ‘root’@’localhost’ (using password: NO)
mysqlにつながらない。
<figure class="figure-image figure-image-fotolife" title="Access denied for user ‘root’@’localhost’ (using password: NO)">[f:id:maserati004:20201210013135p:plain]<figcaption>Access denied for user ‘root’@’localhost’ (using password: NO)</figcaption></figure>
やったこと
①プロジェクトのdatabase.ymlを確認
(略) password: <%= ENV['DB_PASS'] %> (略)
credential.yml.encを見てpasswordが空に設定されていたから、mysqlのパスワードを空に戻さないといけないと気づく。
②パスワード戻す
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password;
③railsを立ち上げてlocalhost:8080を確認するも再度エラーが発生
(3)Your password has expired. To log in you must change it using a client that supports expired passwords.
振り出しに戻った?!?!!!
やりたいことをいったん整理
・パスワードは空のままにしたい ・sequelProが使えるようにしたい ・localhost:8080が開けるようにしたい
考えたこと
・パスワードが期限切れ(?)だから変更しないといけない? ・認証方法をmysql_native_passwordというのに変えたからおかしくなったのか?
・mysqlのバージョンも確認してみた
$ mysql --version mysql Ver 8.0.22 for osx10.15 on x86_64 (Homebrew)
解決策
パスワードをリセットする必要があったみたい。 (参考: http://manualkun.com/ubuntu_phpmyadmin/3/ )
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
これでmysqlつながるようになり、SequelProもつながり、プロジェクトも開けるようになった。
所感
mysql周りのエラー解決方法を調べている時、「いやいやこれじゃ解決しないんだよな」ってことが多かった。
エラー文は同じでも状況は全く一緒ではない。
人間と同じように、エラーも個性って訳か(違う)
はい終わり。ありがとうございました。