将MySQL更新到8.0后,Laravel抛出QueryException

时间:2018-06-03 17:39:41

标签: php mysql laravel

将MySQL升级到8.0版后,任何迁移数据库的尝试都会引发异常,指示<link href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css" rel="stylesheet"/> <head> <script src="//cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.5/plugins/debug.addIndicators.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.5/ScrollMagic.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> </head> <body> <div id="root"></div> </body>

unknown authenticaion method

2 个答案:

答案 0 :(得分:3)

这是因为MySQL 8.0.4已将其默认身份验证机制更改为 [Illuminate\Database\QueryException] SQLSTATE[HY000] [2054] The server requested authentication method unknown t o the client (SQL: select * from information_schema.tables where table_sche ma = wiki and table_name = migrations) [PDOException] SQLSTATE[HY000] [2054] The server requested authentication method unknown t o the client [PDOException] PDO::__construct(): The server requested authentication method unknown to t he client [caching_sha2_password] 。 (second clause

要使用caching_sha2_password .envDB_USERNAME对其进行身份验证,请按照以下说明操作:

  • DB_PASSWORD添加到您的default-authentication-plugin=mysql_native_password

    在CentOS / RHEL上,它位于my.cnf 在Debian / Ubuntu上,我相信它位于/etc/my.cnf 这会将默认身份验证机制恢复为用户名密码。

登录您的mysql并按照程序

  • 删除现有数据库用户并重新创建它。

    为了删除用户:
    /etc/mysql(假设您的数据库是本地的)

  • 创建另一个用户
    DROP USER yourUser@localhost;
    CREATE USER user@localhost IDENTIFIED BY 'yourpassword';

  • 冲洗特权
    GRANT ALL PRIVILEGES ON dbName.* TO user@localhost;

退出mysql并运行:

On Centos / RHEL:FLUSH PRIVILEGES;
在Debian / Ubuntu上:systemctl restart mysqld

我可以在不删除数据库的情况下启动并运行。

参考文献:

答案 1 :(得分:0)

在Windows上

从任务管理器终止sqld,现在从XAMPP控制面板终止并重新启动MySQL。