LoginSignup
0
0

dockerで構築したMySQLにルートユーザーでログインできなかった件の修正備忘録

Last updated at Posted at 2023-12-09

こんばんは!
本日は個人投稿です。

自己学習でLaravel環境を構築していた際のエラー対処備忘録となります

遭遇したエラー

dockerで構築したMySQlコンテナに入り、ルートユーザーでログインしようとした時
下記のエラーが発生しました

# mysql -u root -p
Enter password: 

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

環境

  • dockerでMySQLコンテナを構築
  • MySQL ver.:8.0
  • アプリケーションコンテナでLaravelのプロジェクトを作成していた

docker-compose.yml

設定していたdocker-compose.ymlは以下の通りでした

※ mysqlコンテナだけ抜粋

docker-compose.yml
  mysql:
    build: ".docker/local/mysql"
    ports:
      - "3306:3306"
    volumes:
      - ./storage/mysql:/var/lib/mysql
    environment:
      MYSQL_DATABSE: $DB_DATABASE
      MYSQL_USER: $DB_USERNAME
      MYSQL_PASSWORD: $DB_PASSWORD
      MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
    container_name: pr-mysql

結論

ボリュームを削除して、コンテナを立ち上げ直す事で直りました

手順① コンテナを落とす

$ docker-compose down -v

これで、ボリュームを削除しつつ、コンテナを落とせます。

手順② ローカル側のボリュームを削除する

ですが、コンテナ側のボリュームを削除するコマンドですので
ローカル側は自身で削除する必要がありますスクリーンショット 2023-12-10 1.20.55.png

画像の通り、ymlファイルで、storage/mysqlをマウントしておりますので
コンテナを落とした後に、このディレクトリごと削除する事で、ローカル側のボリュームを更新できます

手順③ もう一度ビルドとコンテナ立ち上げ

これで簡単に言い換えますと「やり直しができた
ということになります

振り返り

適切に環境変数の設定ができている状態でコンテナの立ち上げとボリュームの生成ができていないと考えました。

以下、エラーが発生した際の作業手順です

  1. アプリケーションコンテナの生成
  2. Laraelのインストール
  3. MySQLコンテナの作成(ymlに追記)
  4. envファイルの作成を飛ばして、ビルドしてしまった
  5. 環境変数が読み取れないエラーが発生 <= 当然ですよね
  6. コンテナを落とす
  7. envファイルの作成
  8. コンテナの立ち上げ直し
  9. rootユーザーでログインができない事象が発生

コンテナ側のボリュームを削除するだけでは解決できないこともあるんだな
と再認識しました!

以上、備忘録でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0