【问题标题】:MySQL in Docker returns "The server requested authentication method unknown to the client"Docker 中的 MySQL 返回“客户端未知的服务器请求的身份验证方法”
【发布时间】:2019-02-21 08:23:23
【问题描述】:

我为 Symfony 4 项目使用 Docker Web 堆栈。 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: ***

从 Docker Hub 中提取的镜像是 MySQL 8,当我尝试使用 doctrine:database:create 创建数据库时,我收到了这条消息:

2018-09-17T11:53:51+00:00 [错误] 运行命令“doctrine:database:create”时引发错误。消息:“驱动程序中发生异常: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::__construct():服务器请求客户端未知的身份验证方法[caching_sha2_password]

【问题讨论】:

    标签: mysql docker symfony4


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      MySQL 8.0 使用“Pluggable Authentication” - 您可以通过以下步骤解决该问题。

      1. 打开您的 my.cnf 并添加以下条目(并重新启动 MySQL)

        [mysqld]

        default_authentication_plugin=mysql_native_password

      2. 使用正确的 8.0 语法创建用户(您的 MYSQL_USER 名称)以生成密码(见下文)

        用 mysql_native_password 识别

      冲洗污渍并重试。这应该可以解决问题。

      【讨论】:

        猜你喜欢
        • 2018-10-10
        • 2020-12-03
        • 2018-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-18
        • 2015-05-02
        • 2019-04-24
        相关资源
        最近更新 更多