You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地PHP连接远程MySQL遇HY000/2002错误及参数异常求助

解决本地PHP连接远程MySQL的"getaddrinfo failed"错误

嘿,看了你的错误信息和代码,我马上发现了几个关键问题,咱们一步步来解决:

1. 修正数据库连接地址的核心错误

你在mysqli_connect里写了https://192.168.43.215,这完全不对!MySQL是通过TCP端口直接通信的,根本不需要HTTP/HTTPS协议前缀。直接写纯IP地址就行,如果远程MySQL用的不是默认3306端口,还要加上端口号(比如192.168.43.215:3307)。

2. 修复mysqli_error的用法错误

你的or die(mysqli_error("Error connection"))写法错了:mysqli_error()需要传入mysqli连接对象,不能传字符串。正确的做法是先判断连接是否失败,再捕获专属的连接错误信息。

修正后的完整代码

<?php
// 去掉多余的https://,直接使用远程MySQL的IP地址
$con = mysqli_connect('192.168.43.215', 'root', '12345678', 'bharat');

// 正确的错误处理逻辑
if (!$con) {
    die("连接失败: " . mysqli_connect_error());
}
echo "数据库连接成功!";
?>

3. 远程MySQL必须的配置(重中之重!)

因为你的MySQL部署在远程服务器/另一台电脑上,光改代码还不够,得确保远程MySQL允许外部机器连接:

  • 修改MySQL绑定地址:
    找到MySQL的配置文件(Linux是my.cnf,Windows是my.ini),把bind-address改成0.0.0.0(允许所有IP访问),或者指定你本地机器的具体IP。改完后必须重启MySQL服务才能生效。

  • 给数据库用户授权远程访问权限:
    登录远程MySQL服务器,执行以下SQL语句,允许root用户从任意IP访问bharat数据库(如果要限制仅本地机器访问,把%换成你本地的IP,比如192.168.43.xxx):

    GRANT ALL PRIVILEGES ON bharat.* TO 'root'@'%' IDENTIFIED BY '12345678';
    FLUSH PRIVILEGES;
    
  • 检查防火墙设置:
    远程服务器/另一台电脑的防火墙必须开放MySQL的端口(默认是3306),否则本地机器根本无法建立连接。

最后验证步骤

先在本地命令行用ping 192.168.43.215测试能不能通远程机器,再用telnet 192.168.43.215 3306测试端口是否开放。如果这两步都没问题,再运行修正后的PHP代码,应该就能成功连接了。

内容的提问来源于stack exchange,提问作者Ajoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:07:29