PHP连接mysql遇到的坑(附解决方法,亲测有效)

PHP连接mysql遇到的坑

环境: win10 + PHP5.48 + Apache2.2 + Mysql8.017

PHP连接实例

<?php
	$link = mysql_connect("localhost", "myuser", "mypasswd");
	#myuser: 用户名
    #mypasswd: 密码
	var_dump($link);
	mysql_close();
?>


坑1 Call to undefinedfunction mysql_connect()[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e81RLP4O-1613877272243)

在这里插入图片描述

原因: mysql_connect()函数未定义,php.ini配置文件中未开启
解决方法:
1.1 配置php.ini函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

1.1.1 去掉extension=php_mysql.dll前面的注释分号;

1.1.2 通过extension指定php_mysql.dll的$\textcolor{red}{绝对} $路径

1.2 配置文件路径

1.2.1 将php.ini文件拷贝至c:\windows\system32下

1.3 重启Apache服务(具体怎么重启就不说了,如果这个都不知道,那本文对你没帮助)


坑2 The server requested authentication method unknown to the client

在这里插入图片描述

原因: mysql8.x的密码锁机制不一致导致的

在 mysql 8.x 以后,caching_sha2_password是默认的身份验证插件,而不是以往的mysql_native_password。

解决方法
1.1 修改mysql的my.ini配置文件

在这里插入图片描述

可以看到默认的验证方式是caching_sha2_password ,这里修改为mysql_native_password

1.2 mysql中查看对应用户身份验证插件

在这里插入图片描述

可以看到root用户的身份验证插件已经改为了mysql_native_password

如果身份验证方式没变,执行如下操作

# 登陆mysql
mysql -uroot -p
# 使用mysql数据库
use mysql;
# 修改身份验证插件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';



坑3 字符集错误 sever sent charset unknowd to the client ,Please report to the decelopers

在这里插入图片描述

原因: MySQL8更换了默认的服务器字符集,mysql8.x的字符集character-set-server默认是utf8mb4,不再是5.x时代的utf8了
解决方法:

修改mysql的my.ini配置文件,具体修改条目如下:(这里只展示了需要修改的条目,原配置文件内容很多)

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8


切记:任何每一次的修改,都需要重启Apache服务,以及mysql服务!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值