本地PHP连接远程MySQL遇HY000/2002错误及参数异常求助
嘿,看了你的错误信息和代码,我马上发现了几个关键问题,咱们一步步来解决:
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

