4

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
Community
  • 1
  • 1
Mostafa Ghadimi
  • 5,883
  • 8
  • 64
  • 102

1 Answers1

10

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>
Dipen
  • 1,056
  • 1
  • 19
  • 36
  • thanks, I was struggling with the server field in adminer, I did not know that we had to specify the service name from the docker-compose file rather than the container's IP address. – damou_ 1 Dec 26 '22 at 08:53