🐳

【Docker MySQLイメージ】ERROR 1045 (28000)の解消法

2025/03/11に公開

Laravel12で作成したプロジェクトのDocker MySQLイメージで、MySQLにログインを試したらエラーが…(MySQL バージョン9.2.0)

$ mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解決方法

パスワードなし・rootでログイン

mysql -u root

パスワード設定を行う(ここではpasswordとしました)

set password for root@localhost = 'password';

MySQLを閉じる

mysql> exit

再度ログインを試すとパスワードを尋ねられるので、先ほど入力した「password」を入れると無事にログインできました。

$ mysql -u root -p
Enter password:

Dockerの公式MySQLイメージでは環境変数の設定が必要

Dockerの公式MySQLイメージでは、環境変数 MYSQL_ROOT_PASSWORDを設定しないと、rootユーザーはパスワードなしになるようです。

MYSQL_ROOT_PASSWORD が設定されているか、MYSQL_ALLOW_EMPTY_PASSWORD が true に設定されていないかぎり、デフォルトの状態) の場合、root ユーザーのパスワードは期限切れとして設定され、MySQL を通常どおり使用する前に変更する必要があります。

MySQL :: MySQL 8.0 リファレンスマニュアル :: 2.5.6.2 Docker での MySQL Server のデプロイに関するその他のトピック

「MySQLを通常どおり使用する前に変更する必要があります」とありますが、私は使用前に設定をしなかったので初回ログイン時にエラーが発生したようです。


絶対パスワード合っているのに、なんでログインできないのか解決に時間がかかってしまいました!
そもそもパスワードが設定されていなかったとは…

Discussion