ホームページ >データベース >mysql チュートリアル >MYSQL_ROOT_PASSWORD を設定しているにもかかわらず、Docker MySQL コンテナがアクセスを拒否するのはなぜですか?

MYSQL_ROOT_PASSWORD を設定しているにもかかわらず、Docker MySQL コンテナがアクセスを拒否するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-03 09:05:11423ブラウズ

Why Does My Docker MySQL Container Deny Access Despite Setting MYSQL_ROOT_PASSWORD?

MYSQL_ROOT_PASSWORD を設定しているにもかかわらず、Docker コンテナ内の MySQL へのアクセスが拒否されました

概要

Docker で MySQL データベースにアクセスしようとしましたroot パスワードが設定されている場合でも、コンテナはアクセス拒否エラーを引き起こす可能性があります。 MYSQL_ROOT_PASSWORD 環境変数を通じて設定されます。この問題は、初期化における既存のデータベース データの影響についての誤解が原因で発生する可能性があります。

問題

コンテナの初期化中に、ボリュームがデータベースにマップされている場合データ ディレクトリ (この場合は db_data) にはすでにデータベース ファイルシステムが含まれており、コンテナは既存のデータベースを尊重し、初期化に関連する環境変数を無視します。 MYSQL_ROOT_PASSWORD。その結果、構成された資格情報を使用してデータベースにアクセスしようとすると失敗します。

解決策

この問題を解決するには、事前にコンテナーを起動しないようにしてください。既存のデータベースボリューム。これを行うには、次のコマンドを使用してデータ ボリュームを削除します。

docker-compose down -v

その後、docker-compose up -d コマンドを使用してコンテナを再度起動します。このプロセスでは、既存のデータベースの内容が消去され、MYSQL_ROOT_PASSWORD に保存されている指定された root パスワードを使用して新しいデータベースが初期化されます。

注: 上記のコマンドは、既存のデータを完全に削除するため注意してください。 db_data ボリューム。このデータを保存したい場合は、これらのコマンドを実行する前にバックアップを作成してください。

バインド マウントの代替手段

バインド マウントを使用している場合は、次の手順に移動してコンテンツを手動で削除します。バインド マウント パスに追加し、次を実行します:

rm -rf /path/to/bind/mount/*

その他の関連情報

このアプローチは、MySQL Docker イメージに適用できます。ただし、PostgreSQL や MongoDB 用のイメージなど、他の公式データベース Docker イメージも同様の初期化プロセスに従っており、既存のデータ ボリュームを使用するときに同様の問題が発生する可能性があることに注意してください。

以上がMYSQL_ROOT_PASSWORD を設定しているにもかかわらず、Docker MySQL コンテナがアクセスを拒否するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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