美文网首页
php7&MySQL 5.8 error 2054/1045 解

php7&MySQL 5.8 error 2054/1045 解

作者: Frank_cic | 来源:发表于2018-10-17 16:11 被阅读0次

ERROR[2054]

php连接mysql报错如下:

The server requested authentication method unknown to the client,错误代码[2054]

原因:

MySQL 5.8 默认会使用 caching_sha2_password 扩展, 老版本的 PHP 驱动(mysqlnd)无法识别这个扩展。目前只有 mysql_xdevapi 扩展是 支持 MySQL 的 caching_sha2_password 扩展的。

解决方法 一:
配置 my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password

然并卵,在5.8.11上并未成功,github上有人成功,大家可以试一下先。

解决方法 二:
$ mysql -u root -p //命令行下连接数据库

mysql> use mysql;
mysql> SELECT plugin FROM user WHERE user = 'root';  //语句可查看目标用户扩展,可见 caching_sha2_password
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';  //修改扩展
//此处可输入原密码或使用新密码,目的使用 mysql_native_password 更新密码。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; 
mysql> FLUSH PRIVILEGES;

搞定!


ERROR[1045]

1045 using password: YES
这是本文中可能出现的错误,原因是修改了扩展而忘记更新密码,导致密码加密方式无法匹配,验证密码正确(YES)但无法登录。其它权限问题也可导致 1045 YES,本文不做解决。
1045 using password: NO
此为纯纯的密码错误,没的说,解决方法与上一致,所以也带上。

解决方法:

配置 my.cnf,添加以下内容

[mysqld]
skip-grant-tables

保存退出,重启SQL服务。

$ mysql -u root -p
mysql> use mysql;
// 因 mysql 8 已废除 password 字段和 password() 函数,无法直接修改密码,需先将密码置空
mysql> UPDATE user SET authentication_string = '' WHERE user = 'root'; 

移除之前在 my.cnf 中添加的 skip-grant-tables,保存重启SQL服务,并重新连接mysql,使用空密码登录

$ mysql -u root -p
mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
mysql> FLUSH PRIVILEGES;

问题彻底解决。


密码错误的,直接使用UPDATE更新密码即可,记着最后取消skip-grant-tables就好。

mysql> use mysql;
mysql> UPDATE user SET password = PASSWORD('newpassword') WHERE user = 'root';
mysql> \q;

掰掰

相关文章

网友评论

      本文标题:php7&MySQL 5.8 error 2054/1045 解

      本文链接:https://www.haomeiwen.com/subject/iihrzftx.html