今天在使用php连接MySQL时,提示无法连接,报错信息如下
mysqli_real_connect(): The server requested authentication method unknown to the client [sha256_password]
于是乎求助各大搜索平台,后来发现才发现mysql从8.0.11版本起,不再像mysql5.7及以前版本那样,设置用户密码时默认的验证方式为caching_sha2_password,经过查阅相关的资料后查阅一些相关的资料后发现是由于新版本的mysql账号密码解锁机制不一致导致的。
解决方法:
1.找到mysql安装服务,用cmd(管理员身份打开不),删除mysql服务
2.新建一个mysql.ini配置文件
3.删除之前的data文件夹(如有重要数据记得备份),充满电中用
D:\mysql\bin>mysqld --initialize-insecure --user=mysql
新建一个data 文件
4.之后再重新安装mysql服务,并且为其绑定my.ini配置文件,cmd中用一下语句安装并绑定
D:\mysql\bin>mysqld --install "MySql80" --defaults-file="d:/mysql/my.ini"
5.安装成功并检验启动MySQL服务,在my.ini配置文件中加入
[mysqld]
default_authentication_plugin=mysql_native_password
使mysql加密方式改为旧式的
6.新建一个php测试文件
<?php
$conn=mysqli_connect('127.0.0.1','root','123456');
if (!$conn){
exit('<h1>连接数据库失败</h1>');
}
echo "连接成功!";