admin管理员组

文章数量:1192917

I have docker-compose setup with 2 databases and 2 phpmyadmins. First one works fine, but I have problems connecting to second one (mysql_logs). When I open phpmyadmin2 (localhost:8081) it says it cannot connect to database:

Cannot connect: invalid settings.

mysqli::real_connect(): (HY000/2002): Connection refused

docker-compose.yml:


services:
  mysql_logs:
    image: mysql:5.6
    restart: on-failure
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: logs
    ports:
      - '3307:3306'

  mysql:
    image: mysql:5.6
    restart: on-failure
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: app
    ports:
      - '3306:3306'

  nginx:
    image: nginx:1.19.0-alpine
    restart: on-failure
    volumes:
      - './public/:/usr/src/app'
      - './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro'
    ports:
      - '80:80'
    depends_on:
      - php

  php:
    build:
      context: .
      dockerfile: docker/php/Dockerfile
    volumes:
      - './:/usr/src/app'
    depends_on:
      - mysql

  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 8080:80
    environment:
      - PMA_HOST=mysql
      - PMA_PORT=3306
      - PMA_USER=root
      - PMA_PASSWORD=root

  phpmyadmin2:
    image: phpmyadmin
    restart: always
    ports:
      - 8081:80
    environment:
      - PMA_HOST=mysql_logs
      - PMA_PORT=3307
      - PMA_USER=root
      - PMA_PASSWORD=root

I have docker-compose setup with 2 databases and 2 phpmyadmins. First one works fine, but I have problems connecting to second one (mysql_logs). When I open phpmyadmin2 (localhost:8081) it says it cannot connect to database:

Cannot connect: invalid settings.

mysqli::real_connect(): (HY000/2002): Connection refused

docker-compose.yml:


services:
  mysql_logs:
    image: mysql:5.6
    restart: on-failure
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: logs
    ports:
      - '3307:3306'

  mysql:
    image: mysql:5.6
    restart: on-failure
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: app
    ports:
      - '3306:3306'

  nginx:
    image: nginx:1.19.0-alpine
    restart: on-failure
    volumes:
      - './public/:/usr/src/app'
      - './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro'
    ports:
      - '80:80'
    depends_on:
      - php

  php:
    build:
      context: .
      dockerfile: docker/php/Dockerfile
    volumes:
      - './:/usr/src/app'
    depends_on:
      - mysql

  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 8080:80
    environment:
      - PMA_HOST=mysql
      - PMA_PORT=3306
      - PMA_USER=root
      - PMA_PASSWORD=root

  phpmyadmin2:
    image: phpmyadmin
    restart: always
    ports:
      - 8081:80
    environment:
      - PMA_HOST=mysql_logs
      - PMA_PORT=3307
      - PMA_USER=root
      - PMA_PASSWORD=root
Share Improve this question edited Jan 24 at 13:58 Shadow 34.2k10 gold badges63 silver badges74 bronze badges asked Jan 24 at 12:48 FisherFisher 1,7942 gold badges19 silver badges38 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

In phpmyadmin2.environment, you defined PMA_PORT=3007 because you were trying to connect to mysql_logs which is the second database, right?

And because you did

services:
  mysql_logs:
    ports:
      - '3307:3306'

you thought mysql_logs was exposed on port 3307, right?

Well, there resides the issue. mysql_logs is published on port 3307, but only for the host machine. For the other services defined in services, its still exposed on port 3306.

So to fix that, in phpmyadmin2.environment, you need to define PMA_PORT=3006

本文标签: Cannot connect to mysql in 2 database containers dockercompose setupStack Overflow