Cla*_*ude 6 mysql docker symfony4
我为 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]
只需按如下所示更新 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 使用“可插入身份验证” - 您可以通过执行以下步骤来解决该问题。
打开 my.cnf 并添加以下条目(并重新启动 MySQL)
[mysqld]
default_authentication_plugin=mysql_native_password
使用正确的 8.0 语法创建一个用户(您的 MYSQL_USER 名称)来生成密码(见下文)
使用 mysql_native_password 识别
刷新特权并重试。这应该够了吧。