[解決済み] Docker MYSQL '[2002] 接続が拒否されました'.
質問
初めてDockerを試しました。LEMPスタックを立ち上げたのですが、MYSQLデータベースに接続することができません。Symfonyのアプリケーションでも、PHPMyAdminでもダメです。アプリケーションは以下のエラーコードを返しています。
ドライバで例外が発生しました。SQLSTATE[HY000] [2002] 接続が拒否されました。
これは私の docker-compose.yml です。
nginx:
image: tutum/nginx
ports:
- "80:80"
links:
- phpfpm
volumes:
- ./nginx/default:/etc/nginx/sites-available/default
- ./nginx/default:/etc/nginx/sites-enabled/default
- ./logs/nginx-error.log:/var/log/nginx/error.log
- ./logs/nginx-access.log:/var/log/nginx/access.log
phpfpm:
build: phpfpm/
ports:
- "9000:9000"
volumes:
- ./public:/usr/share/nginx/html
mysql:
image: mariadb
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: admin
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
links:
- mysql
ports:
- 8183:80
environment:
MYSQL_USERNAME: admin
MYSQL_ROOT_PASSWORD: admin
PMA_ARBITRARY: 1
Dockerfile PHPFPMです。
FROM php:fpm
RUN docker-php-ext-enable opcache
RUN apt-get update \
&& apt-get install -y --no-install-recommends libpq-dev \
&& docker-php-ext-install mysqli pdo_pgsql pdo_mysql
GitHubのURLです。 https://github.com/MolengraafFrank/DockerSymfony
どなたか助けていただけませんか?お手数ですが、よろしくお願いします。
どのように解決するのですか?
2002] Connection refused」は、データベースサーバーにアクセスはできるが、そのユーザー(あなたの場合は管理者)に適切なアクセス権がないことを意味します。デフォルトでは、mariadb は MYSQL_ROOT_PASSWORD で指定されたパスワードを持つ root ユーザを持ち、このユーザはどのサーバからも接続できます(%)。
データベースへのオーバーログインを使用する場合、データベースサーバーに、選択した場所のデータベースに対して正しい権限を与えるものを作成する必要があります。
ここで問題なのは、データベースサーバーの名前を 'mysql' (docker-compose ファイル内のサービス名) にしていることです。しかし、デフォルトではphpmyadminは'db'という名前のデータベースサーバーに接続しようとします。追加する
PMA_HOST: mysql
をphpmyadminサービスの環境セクションの下に置くことで、この問題を解決することができます。
MYSQL_USERNAME と PMA_ARBITRARY は、デフォルトの設定(データベースサーバへの root での接続)で動作する場合は、意味がないと思います。
関連
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。