MySQL mysqli_connect() 不能连接数据库问题

本文探讨了在使用PHP的mysqli扩展连接MySQL数据库时,使用IP地址与使用localhost的不同之处。通过实验发现,直接使用IP地址连接可能会因防火墙设置而失败,而使用localhost则更为稳定。文章还分享了一个临时解决方案:关闭防火墙。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事情是这样的。 这样的代码能行:

$servername = "localhost";
$username = "username";
$password = "password";

// 创建连接
$conn = new mysqli($servername, $username, $password);

// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "连接成功";

这样的代码能行:

$servername = "localhost";
$username = "username";
$password = "password";

$link = mysqli_connect($servername, $username, $password, 'wxjs');

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);

输出:

Success: A proper connection to MySQL was made! The my_db database is great.
Host information: Localhost via UNIX socket

这样的代码不行:

$servername = "127.0.0.1";
$username = "username";
$password = "password";

$link = mysqli_connect($servername, $username, $password, 'wxjs');

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);

输出:

Error: Unable to connect to MySQL.
Debugging errno: 2002
Debugging error: Permission denied

得出结论:用IP和用localhost是不一样的。

我还找到了一个很变态的方法解决 用 IP 不行的,居然是关掉防火墙……

$ sudo setenforce 0

MySQL 新手。幼稚了……

转载于:https://my.oschina.net/guodapeng/blog/3016512

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值