akitoshiblog

エンジニアの日々の思考と学びの記録。

「Your password has expired. To log in you must change it using a client that supports expired passwords.」に関連するエラー解決

エラー発生から解決まで

(1)SequelProに入れない(添付写真1枚目)

f:id:maserati004:20201210012825p:plain
sequelproに入れない

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を確認するも再度エラーが発生

f:id:maserati004:20201210013620p:plain
Your password has expired. To log in you must change it using a client that supports expired passwords.

(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周りのエラー解決方法を調べている時、「いやいやこれじゃ解決しないんだよな」ってことが多かった。

エラー文は同じでも状況は全く一緒ではない。

人間と同じように、エラーも個性って訳か(違う)

はい終わり。ありがとうございました。

参考記事など

dev.mysql.com

pqtomblog.com

manualkun.com