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

时间:2018-09-17 11:58:56

标签: mysql docker symfony4

我将Symfony 4项目使用Docker Web堆栈。 MySQL配置是:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/drilldown.js"></script>
<script src="http://blacklabel.github.io/grouped_categories/grouped-categories.js"></script>
<div id="container-main-bar"></div>

从Docker Hub提取的映像是MySQL 8,当我尝试使用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: *** 创建数据库时,收到此消息:

  

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]未知的身份验证方法

2 个答案:

答案 0 :(得分:1)

MySQL 8.0使用“可插入身份验证”-您可以按照以下步骤解决问题。

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

    [mysqld]

    default_authentication_plugin = mysql_native_password

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

    通过mysql_native_password识别

冲洗小物件,然后重试。那应该可以解决问题。

答案 1 :(得分: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: ***