mysqldocker-composeadminer

Can't Connect to MySQL Database using Adminer and docker-compose


I'm trying to connect to my mysql database using official adminer and mysql images from docker hub.

Here is my docker-compose.yml file configuration:

version: '3'
services:
  mysql:
    image: mysql
    restart: always
    volumes: 
      - mysql:/var/lib/mysql
    environment: 
      - MYSQL_ALLOW_EMPTY_PASSWORD= 1
      - MYSQL_DATABASE= db
    ports: 
      - 3306:3306
      - 33060:33060
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
    depends_on: 
      - mysql
volumes:
  mysql:

Whenever I want to login to the MySQL using Adminer I face with the following problem:

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

SQLSTATE[HY000] [2002] No such file or directory

Here is the inputs I've used trying to connect to MySQL from Adminer interface:

#first try
System: MySQL
Server: localhost
Username: root
Database: db

#second try
System: MySQL
Server: mysql #container-name
Username: root
Database: db

Solution

  • You have to add the default authentication plugin in compose file

    command: --default-authentication-plugin=mysql_native_password
    

    Here is the complete docker-compose.yml

    services:
      mysql:
        image: mysql
        restart: always
        command: --default-authentication-plugin=mysql_native_password
        volumes: 
          - mysql:/var/lib/mysql
        environment: 
          - MYSQL_ALLOW_EMPTY_PASSWORD= 1
          - MYSQL_DATABASE= db
        ports: 
          - 3306:3306
          - 33060:33060
      adminer:
        image: adminer
        restart: always
        ports:
          - 8080:8080
        depends_on: 
          - mysql
    volumes:
      mysql:
    

    In adminer

    System: MySQL <DB System to connect>
    Server: mysql <should match the starting tag before image tag > (in your case mysql but you can change it to any name )
    Username: root <username>
    Password: <password>
    Database: db <database name>