使用Apache2.2连接php的MySQL数据库问题集合 (Client does not support authentication protocol requested by server)


问题集合

作者在数据库实验中,使用如下的文本文档建立php数据库的访问文件后,出现了如下故障

测试代码:

<?php
  $myconn = mysql_connect ( "localhost","root","password");
  if($myconn){
    echo "数据库链接成功!可以申请老师检查!";
   }
   else {
    echo "数据库链接失败!继续按指导书修改!";
 }
?>

PHP主要显示错误如下
PHP报错

  • MySQL8及以上版本的报错:

Warning: mysql connect() [function.mysqL- connect]: Client does not support authentication protocol requested by server; consider
upgrading MySQL client in C:Program Files (x86)lApache Software

  • MySQL5及以上版本的报错

Access denied for user ‘root’@‘localhost’ (using password: YES) in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\mysqlconn.php on line 3


在这个报错网页中,主要有以下三种错误

1.乱码

在上面的图片中,我们可以看到输出的文件存在着乱码现象,作者经过分析后发现主要是由于在输出的文字中含有中文字符

解决方法一

修改测试文件,将中文字符修改为Fail等,使其不含有中文字符

解决方法二

在PHP文本文件头部中加入

header("content-type:text/html;charset=utf-8");

这样一句代码,使其按照utf-8的方式编码


2.版本问题

由于实验室还使用Apache2.0进行实验,作者一开始使用MySQL8.0做实验,发现存在着版本不匹配的问题,主要出现在代码中的mysql_connect函数的部分,在较高的MySQL版本中,存在着不匹配的问题,故提示

consider upgrading MySQL client in C:Program Files (x86)lApache Software

我们可以将PHP文件的mysql_connect函数修改为适配更高版本的mysqli_connect,即可解决问题

$myconn = mysql_connect ( "localhost","root","password");
#改为下面这个句子
$myconn=mysqli_connect("localhost","root","password");
#记得,"password"中填你自己的MySQL的管理员/用户密码,忘了的可以去查一下怎么改

3.密码输入错误

由于作者直接将指导书中的代码直接复制下来,忘了将指导书中的"password"改为自己的MySQL中的密码,一直出错 ,改了很久(一晚上 T_T),前人种树,后人乘凉hhh

会出现如下错误

Client does not support authentication protocol requested by server

的问题,其实主要不是版本的适配错误,主要是你输入的密码错了,只需要将代码中的"password"的部分改成你自己的MySQL的管理员/用户密码即可,忘了同志的可以去Baidu查一下怎么改,这里将不再赘述


修改完毕后的PHP代码

<?php
header("content-type:text/html;charset=utf-8");#修改编码方式

$myconn=mysqli_connect("localhost","root","9999");
if($myconn){
 echo "数据库连接成功!可以申请老师检查!";
 }
 else {
 echo "数据库连接失败!继续按指导书修改!";
 }
?>

最后再次登录数据库,测试结果成功!

PHP测试成功


写在最后

各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟! <(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值