ホームページ >データベース >mysql チュートリアル >Docker で MYSQL_ROOT_PASSWORD が設定されている場合でも、MySQL ルート ユーザーに対して「アクセスが拒否されました」が発生するのはなぜですか?

Docker で MYSQL_ROOT_PASSWORD が設定されている場合でも、MySQL ルート ユーザーに対して「アクセスが拒否されました」が発生するのはなぜですか?

DDD
DDDオリジナル
2024-12-20 08:20:11405ブラウズ

Why Does

MySQL_ROOT_PASSWORD が設定されていますが、ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワード: YES を使用)

Docker 化された MySQL 環境の場合、MYSQL_ROOT_PASSWORD 環境変数を設定するだけでは、データベース。これは、db_data ボリュームに既存のインストールが既に含まれている場合、イメージは新しいデータベースを初期化しないためです。

トラブルシューティング:

  1. データベースは db_data ボリュームですでに初期化されています: 既存のボリュームを使用してコンテナを起動した場合、環境変数は効果がなく、データベースは初期化されません。
  2. db_data ボリュームを削除して初期化を強制します:

    • docker-compose down を実行します。 -v で既存のボリュームを削除します。
    • docker-compose up -d を実行してコンテナを起動します。新しいボリュームを作成し、データベースを初期化します。
  3. 必要に応じてバインド マウントに変換します。

    • 後データベースを初期化する場合、docker-compose.yml のボリューム セクションを変更することで、ボリュームをバインド マウントに変換できます。 to:

      volumes:
         - /host/path/to/db_data:/var/lib/mysql
    • コンテナを起動する前にバインド マウント場所の内容を削除します: rm -rf /host/path/to/db_data/*
  4. 他の可能性を確認する問題:

    • MYSQL_ROOT_PASSWORD 変数が適切に設定されていることを確認してください。
    • ファイアウォール設定をチェックして、ポート 3306 が開いていることを確認してください。
    • MySQL サービスは内部で実行されています。コンテナ。

以上がDocker で MYSQL_ROOT_PASSWORD が設定されている場合でも、MySQL ルート ユーザーに対して「アクセスが拒否されました」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。