docker中的mysql返回“客户端未知的服务器请求的身份验证方法”

p3rjfoxz  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(414)

我为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_PASSWORD:***

从DockerHub中提取的图像是MySQL8,当我尝试使用 doctrine:database:create 我收到这条信息:
2018-09-17t11:53:51+00:00[error]运行命令时引发错误“doctrine:database:创建”。消息:“驱动程序中发生异常: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::uu construct():服务器请求的身份验证方法客户端未知[缓存\u sha2\u密码]

6ioyuze2

6ioyuze21#

MySQL8.0使用“可插入身份验证”——您可以通过以下步骤来解决这个问题。
打开my.cnf并添加以下条目(然后重新启动mysql)
[我的qld]
默认\u身份验证\u插件=mysql\u本机\u密码
使用正确的8.0语法创建一个用户(mysql\u用户名)来生成密码(见下文)
用mysql\u本地\u密码标识
冲洗皮维列格,然后再试一次。这应该能奏效。

pbgvytdp

pbgvytdp2#

只需更新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:***

相关问题