【问题标题】:An exception occurred in driver: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client驱动程序发生异常:SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法
【发布时间】:2018-10-30 14:48:14
【问题描述】:

当我尝试连接到数据库时,在 PHP Symfony4 /PDO Doctrine with MySql 8.0.13 Server 中出现此错误:

驱动程序发生异常:SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法

【问题讨论】:

    标签: php mysql symfony doctrine


    【解决方案1】:

    对于 MySQL 8 和 PHP7+,您必须使用旧式密码:

    ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';
    

    【讨论】:

    • 我在尝试'root'@'127.0.0.1' 出错。但后来我尝试了'root'@'localhost',效果很好。
    【解决方案2】:

    所以,这里是修复。您可以使用 PHP 的 MySQL 数据库驱动程序仍然期望的“旧”身份验证机制创建用户。

    CREATE USER 'ohdear_ci'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ohdear_secret';
    GRANT ALL PRIVILEGES ON ohdear_ci.* TO 'ohdear_ci'@'localhost';
    

    如果您已有对数据库具有权限的现有用户,则可以改为修改该用户。

    ALTER USER 'ohdear_ci'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ohdear_secret';
    

    之后,您的 PHP 代码可以再次连接到 MySQL 8。

    Reference Link

    【讨论】:

      【解决方案3】:

      您可以在 mysql 配置中设置指令:

      [mysqld]
      default_authentication_plugin=mysql_native_password
      

      【讨论】:

      • 请详细说明为什么要使用这个解决方案。
      • @Xanlantos 这样您就不必在每次使用 mysql 创建/更新用户时都指定它。它将被设置为默认值。
      猜你喜欢
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 2015-05-02
      • 2021-11-12
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多