问题
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]
回答1:
MySQL 8.0 uses "Pluggable Authentication" - You can solve the issue by taking the following steps.
Open your my.cnf and add the following entry (and restart MySQL)
[mysqld]
default_authentication_plugin=mysql_native_password
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.
回答2:
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: ***
来源:https://stackoverflow.com/questions/52367254/mysql-in-docker-returns-the-server-requested-authentication-method-unknown-to-t