同一网络下机器X连接机器Y的MySQL数据库失败求助
跨机器连接MySQL失败的解决方案
问题概述
机器Y本地操作MySQL数据库一切正常,但同一网络的机器X运行脚本连接机器Y的MySQL时,出现报错:
"2003 (HY000): Can't connect to MySQL server on '172.22.128.1:3306 (10060)"
机器X的IPv4地址:172.22.128.1
机器Y上的连接脚本:
declaracao = f'INSERT INTO similares (momento,produto1,produto2,res) VALUES ("teste","teste","teste",10.00);' try: # CREATE CONNECTION MYSQL con = mysql.connector.connect(user='root', password='root', host='172.22.128.1', database='saneamento') # 此处触发错误 cursor = con.cursor() cursor.execute(declaracao) con.commit() print(cursor.rowcount, "Insert dados!") cursor.close() except Error as e: print("Fail", e)
相关配置截图:
- XAMPP设置
- MySQL设置
- phpMyAdmin设置
排查与解决步骤
1. 修正目标IP配置
当前脚本中host参数填写的是机器X的IP(172.22.128.1),但你需要连接的是机器Y的MySQL,必须将host修改为机器Y的实际IPv4地址,这是最可能导致连接失败的直接原因。
2. 调整MySQL绑定地址
检查机器Y上MySQL的配置文件(Windows为my.ini,Linux为my.cnf):
- 找到
bind-address项,若值为127.0.0.1,说明MySQL仅允许本地连接,需修改为0.0.0.0(允许所有IP访问)或机器Y的具体IP。 - 修改后重启MySQL服务生效。
3. 授权远程访问权限
登录机器Y的MySQL控制台,执行以下命令为root用户授权从机器X访问的权限:
GRANT ALL PRIVILEGES ON saneamento.* TO 'root'@'172.22.128.1' IDENTIFIED BY 'root'; FLUSH PRIVILEGES;
- 若需允许所有IP访问,可将
172.22.128.1替换为%,但出于安全建议仅授权特定IP。
4. 检查防火墙规则
- 机器Y的系统防火墙(Windows防火墙/Linux iptables/ufw)需开放3306端口,允许机器X的IP访问。
- 若使用XAMPP,确认XAMPP自带的防火墙规则已放行MySQL的3306端口。
5. 验证网络连通性
在机器X上执行命令测试与机器Y 3306端口的连通性:
# Windows CMD telnet <机器Y的IP> 3306 # Windows PowerShell Test-NetConnection <机器Y的IP> -Port 3306 # Linux/macOS nc -zv <机器Y的IP> 3306
若无法连通,优先排查网络或防火墙问题。
6. 确认MySQL服务状态
确保机器Y上的MySQL服务处于运行状态,可通过XAMPP控制面板或系统服务列表检查。
内容的提问来源于stack exchange,提问作者Brandalize
相关产品推荐
相关产品推荐

