PHP7.2连接MySQL8.0失败的问题解决

PHP7.2连接MySQL8.0失败的问题解决

似乎每天晚上都会遇到一个让人难以入眠的问题。昨天遇到的是PHP连接MySQL数据库的问题。不过昨天晚上没能解决,今天上午弄了一上午终于找到了这篇文章:php7连接mysql8

最开始是运行下面的代码:

1
2
3
4
5
6
7
8
9
10
<?php
$con = mysqli_connect("localhost", "root", "12345");
if(!$con) {
echo "连接失败!<br>";
echo "错误编号:".mysqli_errno()."<br>";
echo "错误信息:".mysqli_error()."<br>";
}
else{
echo "连接成功";
}

结果总是提示出错,记不清是什么样的错误了。大概解决方法如下。

按照上面提到的那篇博客中所说的,出错的原因在于:mysql8使用caching_sha2_password的身份验证机制,而以往的验证机制则是mysql_native_password

首先需要打开my.cnf,在[mysqld]标签下添加下面的配置:

1
default_authentication_plugin=mysql_native_password

重启MySQL之后会发现问题还是没有被解决。因为这样只对修改配置并重启Mysql后的新建用户有效,而最初创建的root用户依然是caching_sha2_password的身份验证机制。

下面继续修改配置文件my.cnf,加上(也是在哪个标签下):

1
skip-grant-tables

重启MySQL之后再删除刚刚添加的skip-grant-tables,然后再次重启MySQL。

在这之后,我就神奇的发现我的PHP能够连接MySQL了!(最后几步确实很迷。)

# MySQL, PHP

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×