前提
如题所示使用的是PHP7的版本,连接MYSQL8.0数据库遇到的问题,提供我个人的解决办法。
我的报错是:Call to undefined function mysqli_connect()
首先明确
- 保证PHP与MySQL可以正常使用
访问localhost:80【或者你设置的端口号】是有页面的 - 服务正常启用着
- 使用
mysqli_connect()
而不是mysql_connect()
因为7.x版本中已经舍弃了mysql_connect();
最后成功的操作
是这篇文章解决了 https://www.codenong.com/cs107088187/
打开PHP的安装目录找到php.ini
如果没有复制php.ini-development或者php.ini-production重命名为php.ini
修改里面的配置,就是去掉前面的 ; 打开对应功能
extension=bz2
extension=curl
extension=gd2
extension=mbstring
extension=mysqli
extension=pdo_mysql
extension=pdo_sqlite
图示:
还有一个需要改
extension_dir="[php安装目录]\ext"
这里不能照抄
啊,找到自己的目录。保存php.ini文件关闭
重启一下Apache
我也不是很懂为什么要重启
测试
在apache下的htdocs下新建一个newpublic.php文件【反正php文件就行】
<?php //主机名:localost 用户名:root 密码:123456
$con=mysqli_connect('localhost','root','123456');
// var_dump($con);
// echo '<pre>';
//简单测试一下
if ($con) {echo '连接成功';
}else{echo "连接失败";
}?>
访问 http://localhost:8080/newpublic.php
我监听的是8080端口,如果不一样可以需要修改
测试成功
其他方法 修改权限
如果问题没有解决话可以试试下面的方法,因为的也有根据下面的方法修改过。不清楚有无影响。(具体看链接:PHP连接MYSQL8.0失败 )
# 简略版 我的新密码 用'123456'
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';修改权限
# 刷新权限
FLUSH privileges;
安装的 MySQL Server 8.0\MySQLData下面(这是隐藏文件)的my.ini 这个配置文件里的[mysqld]这个部分,添加default_authentication_plugin=mysql_native_password
重启MySQL服务