ホームページ  >  に質問  >  本文

ローカルホストからDockerネットワークで実行されているDockerコンテナに接続する方法

<p>次のように docker を使用して mysql docker コンテナを作成しました。</p> <pre class="brush:php;toolbar:false;">バージョン: "3.3" サービス: データベースサーバー: コンテナ名: データベース 画像: mysql:最新 建てる: ドッカーファイル: ./Dockerfile 環境: MYSQL_ROOT_PASSWORD: rootTest MYSQL_USER: ソウマリヤ MYSQL_PASSWORD: userTest ポート: - 「3031:3306」 ネットワーク: - 内部 ボリューム: - mysql:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro 再起動: 停止しない限り ネットワーク: 内部: ドライバー:ブリッジ ボリューム: mysql:</pre> <p>正しいパスワードを使用して localhost:3031 に接続していますが、次のエラーが表示されます:</p> <pre class="lang-bash prettyprint-override"><code>ユーザー 'root'@'172.19.0.1' のアクセスが拒否されました (パスワードを使用: YES) </code></pre> <p>このエラーを修正するにはどうすればよいですか? 同じ内部ネットワーク内の他のコンテナもデータベースに接続できません。 </p><p>Dockerfile の内容をここに示します。</p><p><code></code></p> <pre class="brush:php;toolbar:false;">ADD init.sql init.sql</pre> <p>initの内容を渡しました。ここでの SQL:</p> <pre class="brush:php;toolbar:false;">レビューが存在しない場合はデータベースを作成します。 ユーザーが存在しない場合はデータベースを作成します。 ベンダーが存在しない場合はデータベースを作成します。 レビューに関するすべての権限を付与します。* を 'soumalya'@'%' に付与します。 users.* にすべての権限を付与します。 'soumalya'@'%'; ベンダーにすべての権限を付与します。* を 'soumalya'@'%';</pre> に付与します。 <p>コンテナのログから、データベースが起動し、ポート 3306 での受信接続を待機していることがわかります。 </p>
P粉418854048P粉418854048452日前483

全員に返信(1)返信します

  • P粉803527801

    P粉8035278012023-07-26 10:43:28

    @HansKillan が言ったように、データベースがすでに存在するときにパスワードを変更しました。変更されたパスワードは無視され、古いパスワードが使用されていました。ユーザーのパスワードを変更するには、docker exec <container_name>... SQL コマンドを使用して SQL コマンドを記述し、ユーザーのパスワードを手動で変更する必要がありました。その後、すべてがうまくいきました。あなたの場合、データベースに多くのデータが含まれていない場合は、ボリュームを削除してコンテナを再作成するだけで時間を短縮できます

    返事
    0
  • キャンセル返事