🐳
【Docker MySQLイメージ】ERROR 1045 (28000)の解消法
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