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

同一网络下机器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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:20:43