1. ホーム
  2. docker

docker上で動作するphpからmysqlへの接続の解決策、表示(HY000/2002)。接続が拒否されました

2022-02-11 08:46:59
  • phpはdockerで動作しているmysqlにlocalhostの127.0.0.1で接続できません。これは、dockerで動作している各コンテナのlocalhost 127.0.0.1 がmysqlコンテナではなくそれ自身のコンテナになっており、親IP、またはmysqlコンテナ名への変更が必要であるためです。

  • 例えば、以下のようなdocker-compose.ymlがあります。

version: '3'

services:
  mysql:
# build: . /mysql
    image: daocloud.io/library/mysql:5.7.20
    volumes:
      - . /mysql/conf:/etc/mysql
      - . /mysql/data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
      - "3306:3306"
    networks:
      - lnmp

  php54:
    build: . /php54
# # Use the HOST:CONTAINER format or just specify the port of the container (the host will choose the port at random)
# Open port 9000
    ports:
      - "9005:9000"
# # This implements the folder code directory mapping
    volumes:
      - ... /:/data
      - . /php54/hosts:/etc/hosts
      - . /php54/etc/php/php.ini:/usr/local/etc/php/php.ini
      - . /php54/etc/php-fpm.conf:/usr/local/etc/php-fpm.conf
    links:
      - mysql
    privileged: true
    networks:
      - lnmp
  nginx:
    build: . /nginx
  # This implements the folder code directory mapping
    volumes:
      - ... /:/data
      - . /php54/hosts:/etc/hosts
    links:
      - php54:php54
    privileged: true
    ports:
      - "80:80"
    networks:
      - lnmp

networks:
  lnmp:
    driver: bridge


  • phpのアドレスはmysqlで、localhostや127.0.0.1でなくても接続できる。

参考にしてください。

https://www.cnblogs.com/imbin/p/8299141.html