Docker中的MySQL返回“;服务器请求的身份验证方法客户端未知;
我为symfony4项目使用DockerWeb堆栈。MySQL配置为:Docker中的MySQL返回“;服务器请求的身份验证方法客户端未知;,mysql,docker,symfony4,Mysql,Docker,Symfony4,我为symfony4项目使用DockerWeb堆栈。MySQL配置为: mysql: image: mysql container_name: sf4_mysql volumes: - .docker/data/db:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: *** MYSQL_USER: ***
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: ***
从Docker Hub中提取的图像是MySQL 8,当我尝试使用doctor:database:create创建数据库时,我收到以下消息:
2018-09-17T11:53:51+00:00[错误]运行命令“条令:数据库:创建”时引发错误。消息:“驱动程序SQLSTATE[HY000][2054]中发生异常,服务器请求身份验证
“客户不知道的方法”
在AbstractMySQLDriver.php第126行中:
驱动程序SQLSTATE[HY000][2054]中发生异常。服务器请求客户端未知的身份验证方法
在PDOConnection.php第50行中:
SQLSTATE[HY000][2054]服务器请求的身份验证方法客户端未知
在PDOConnection.php第46行中:
SQLSTATE[HY000][2054]服务器请求的身份验证方法客户端未知
在PDOConnection.php第46行中:
PDO::_构造():服务器请求的身份验证方法客户端未知[缓存_sha2_密码]
MySQL 8.0使用“可插拔身份验证”-您可以通过以下步骤解决此问题
打开my.cnf并添加以下条目(并重新启动MySQL)
[mysqld]
默认\u身份验证\u插件=mysql\u本机\u密码
使用正确的8.0语法创建一个用户(您的MYSQL\u用户名)以生成密码(见下文)
使用mysql\u本机\u密码标识
冲洗pivileges,然后重试。这就可以了。只需更新docker compose文件,如下所示,然后重建图像
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: ***