【附有安装包连接】mysql 8.0的一些坑包括采用PHP 7.0 连接时报错Unexpected server respose while doing caching_sha2 auth: 109

链接:https://pan.baidu.com/s/1cMzgEKXb9Cpkjbz9APOhiw 提取码:ld0x 【mysql 8.0】


注: 此版本使用caching_sha2_password的身份验证机制。在以往的版本中采用的是mysql_native_password 这种验证机制。

这是这个坑导致后面,Navicat连接会报错:

1251--Client does not support authentication protocol requested by server

PHP连接时也报错:

Unexpected server respose while doing caching_sha2 auth: 109

另外,采用这种机制的验证方式似乎对密码的设置要求也提高了,不能是纯数字!!!!!!!!!!(我的密码设置成数字+字符了)否则会报这个错:

ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements

解决策略

更改验证方式,先进入mysql,输入:

 select host,user,plugin,authentication_string from mysql.user;

得到:

在这里插入图片描述

为了直观,我创建了个php用户,可以看到它默认的方式总是caching…bra bra bra,root是我修改过的。

确认是这个caching搞的鬼后:输入

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '!1234'  //更改验证方式

回车,输入下面这个刷新

FLUSH PRIVILEGES;

修改mysql配置文件

[mysql]
default-character-set=utf8

[mysqld]
#skip-grant-tables
port = 3306
basedir=F:\mysql-8.0.11-winx64
datadir=F:\mysql-8.0.11-winx64\data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password  //加入这句话
[client]
port=3306
default-character-set=utf8

重启mysql服务

捞的重启方式就不说了,这里记录一下cmd以及Linux的重启命令

windows:

//后启动
net start mysql
//先停止
net stop mysql

Linux

//启动
1、使用 service 启动:service mysqld start

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start

//停止

1、使用 service 启动:service mysqld stop

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

3、 mysqladmin shutdown 

//重启

1、 使用 service 启动:service mysqld restart

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart

上面修改后,可以再次用navicat连接试试,我的就可以了。如果有人还报错,报的是1045,那多半是密码问题,(1)你输入的密码不对 ,你忘了!这种的话,百度一下大量解决办法,总有一个适合你

1045 access denied for user 'root'@'localhost'

(2)如果是刚刚安装的,还没动过密码的,那这个好办。mysql 8.0安装后会生成一个临时密码,在mysql文件夹下找到data文件,找到err为后缀的文件,按Ctrl+F搜索password你就可以看到了,就在冒号后面的那一串乱码。


修改后再次测试PHP连接:

<?php
	$servername = "localhost";
	$username = "root";
	$password = "!1234";
	$dbname = "hunsha";
	 
	// 创建连接
	$conn = new mysqli($servername, $username, $password, $dbname);
	// Check connection
	if ($conn->connect_error) {
	    die("连接失败: " . $conn->connect_error);
	} 
	 
	$sql = "SELECT password FROM user";
	$result = $conn->query($sql);
	 
	if ($result->num_rows > 0) {
	    // 输出数据
	    while($row = $result->fetch_assoc()) {
	        echo "password: " . $row["password"]. "<br>";
	    }
	} else {
	    echo "0 结果";
	}
	$conn->close();
		
?>

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

legendaryhaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值