6

I use a Docker web stack for Symfony 4 project. MySQL configuration is :

mysql:
    image: mysql
    container_name: sf4_mysql
    volumes:
        - .docker/data/db:/var/lib/mysql
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: ***
        MYSQL_USER: ***
        MYSQL_PASSWORD: ***

The pulled image from Docker Hub is MySQL 8 and when I tried to create database with doctrine:database:create I received this message :

2018-09-17T11:53:51+00:00 [error] Error thrown while running command "doctrine:database:create". Message: "An exception occurred in driver: SQLSTATE[HY000] [2054] The server requested authentication me thod unknown to the client"

In AbstractMySQLDriver.php line 126:

An exception occurred in driver: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

In PDOConnection.php line 50:

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

In PDOConnection.php line 46:

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

In PDOConnection.php line 46:

PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]

2 Answers 2

9

just update your docker-compose file as given below and rebuild the image.

 mysql:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    container_name: sf4_mysql
    volumes:
        - .docker/data/db:/var/lib/mysql
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: ***
        MYSQL_USER: ***
        MYSQL_PASSWORD: ***
Sign up to request clarification or add additional context in comments.

2 Comments

it was a life saver.
But I am getting another error after that. cURL error 7: Failed to connect to ::1: Cannot assign requested address.
2

MySQL 8.0 uses "Pluggable Authentication" - You can solve the issue by taking the following steps.

  1. Open your my.cnf and add the following entry (and restart MySQL)

    [mysqld]

    default_authentication_plugin=mysql_native_password

  2. Create a user (your MYSQL_USER name) using the correct 8.0 syntax for generating the password (see below)

    IDENTIFIED WITH mysql_native_password

Flush the pivileges and try again. That should do the trick.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.