Syed Aqeel
Syed Aqeel

Reputation: 1009

Unable to connect phpmyadmin to database using docker compose

May be this question asked few times before but I did't get a valid answer which can solve my problem.

I am trying to run phpmyadmin in docker on different container using docker-compose but It always through the following error:

#2002 - Connection refused — The server is not responding (or the local server's socket is not correctly configured).

My docker compose file contains the following code:

version: "2"

services:
  web:
    build: .
    ports:
      - "80:80"
    networks: 
      - web
    volumes:
      - .:/code
    restart: always
  db:
    image: "mysql:5"
    volumes:
      - ./mysql:/etc/mysql/conf.d
    environment:
      MYSQL_ROOT_PASSWORD: toor
      MYSQL_DATABASE: phpapp
    networks: 
      - web
    restart: always
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_PORT: 3306
      PMA_HOST: db
      PMA_USER: root
      PMA_PASSWORD: toor
    ports:
      - "8000:80"
    restart: always
    networks: 
      - web

networks: 
  web:
    driver: bridge

In web container I am trying to connect with database and it works fine, but the problem occur with phpmyadmin connection

Any help would be appreciated. :)

Upvotes: 2

Views: 14578

Answers (2)

Rathore
Rathore

Reputation: 1988

Now you need to add command to mysql service for connecting to phpmyadmin.

command: --default-authentication-plugin=mysql_native_password

version: "2"
services:
db:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    ports: 
        - "3306:3306"
    environment:
        MYSQL_DATABASE: drupal
        MYSQL_USER: user
        MYSQL_PASSWORD: test
        MYSQL_ROOT_PASSWORD: test
    volumes:
        - ./dump:/docker-entrypoint-initdb.d
        - /var/lib/mysql
    networks:
        - default
phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links: 
        - db:db
    ports:
        - 8000:80
    environment:
        PMA_HOST: db
        MYSQL_USER: user
        MYSQL_PASSWORD: test
        MYSQL_ROOT_PASSWORD: test

Upvotes: 1

Petr Matukhov
Petr Matukhov

Reputation: 56

Interestng enough, I have your compose-file running and phpmyadmin is accessible from host.

Had to change port 8000 to 8004 though (port 8000 is occupied on my host).

In case your db-container does not start fast enough for phpmyadmin to connect, I suggest adding depends_on into phpmyadmin service. Makes sure db starts before phpmyadmin.

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_PORT: 3306
      PMA_HOST: db
      PMA_USER: root
      PMA_PASSWORD: toor
    ports:
    - "8004:80"
    restart: always
    depends_on: 
    - db
    networks: 
    - web

Please show logs from docker-compose up if problem persists.

Upvotes: 2

Related Questions