为什么我总是无法成功连接到别人电脑上的MySQL数据库呢?这到底是怎么回事呢?

更新于
2026-08-11 03:25:43
3阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐
其实,

这篇文章共计2309个文字。预计阅读时间需要10分钟。

导语

因为信息化时代的到来数据库技术在各行各业中的应用日益广泛。MySQL这款开源的关系型数据库管理程序,以其稳定性、易用性等特点受到广大使用者的青睐。只是在使用过程中,有些使用者可能会遇到无法连接到别人电脑的MySQL数据库的问题。

为什么我总是无法成功连接到别人电脑上的MySQL数据库呢?这到底是怎么回事呢?

下面内容将方便你定位问题根源,并给出切实可行的方法。话说回来,

一、原因分析

  1. 网络连接问题

    如果你与目标电脑不在同一个局域网内。直接通过IP访问很可能被路由器或防火墙阻断。建议先用 ping 目标IP 命令确认网络连通性;若无法ping通,需要检查路由器、VPN或公网端口映射是否正确。

  2. 权限问题

    即使网络正常。如果MySQL账户没有相应权限,也会返回“Access denied”。请确认使用者名、密码和主机地址已在User表中正确授权。必要时使用管理员账号执行 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password';FLUSH PRIVILEGES;

    为什么我总是无法成功连接到别人电脑上的MySQL数据库呢?这到底是怎么回事呢?
  3. 防火墙设置

    Windows Defender 防火墙或第三方防火墙默认阻止外部访问3306端口。请在控制面板→程序和安全→Windows Defender 防火墙→允许应用或功能通过Windows Defender 防火墙中。确保MySQL已勾选为允许,并开启入站规则。不过,

  4. MySQL服务未启动或监听错误

    打开服务管理器。确认“MySQL”或“MySQL80”等服务状态为运行;若未运行,可右键选择启动;若已启动但仍报错,检查 段下的 bind-address=127.0.0.1 是否限制了远程访问;若是请改为 * 或目标服务器IP。

  5. IP地址问题

    A/B两台电脑若采用DHCP获取动态IP,则每次重启后可能变更。 建议使用静态IP,或者在路由器上设置DHCP固定租约; 怎么说呢,记录当前IP以便随时更新连接参数。

  6. 数据库名称错误 / 数据库不存在

    If you attempt to connect to a non‑existent database name。MySQL will reject connection with “Unknown database”. Always double‑check database name and ensure it exists on server.

二、解决方法一览表

检查并启动 MySQL 服务

修改防火墙设置

调整 MySQL 配置文件

Mysql 配置文件 my.ini / my.cnf 位于安装目录下:

  • - 确认:  # bind-address = 127.0.0.1 # 默认仅本机可访问 bind-address = * # 或者改成服务器实际 IP port = 3306 socket = /var/run/mysqld/mysqld.sock key_buffer_size = 16M max_allowed_packet=64M thread_stack=128K thread_cache_size=8 query_cache_type=1 query_cache_size=32M log-error=/var/log/mysql/error.log slow_query_log_file=/var/log/mysql/slow.log long_query_time=5 log_warnings=4 expire_logs_days=7 max_binlog_size=100M max_connections=500 wait_timeout=28800 interactive_timeout=28800 # 如果开启了 binlog: # log_bin=mysql-bin # server-id = 1 # relay_log=mysql-relay-bin # auto_increment_increment =10 -- 禁止 IPv6 如果你不想支持 IPv6,可注释掉对应条目-- -- 对外监听配置: # port = 3306 # bind-address = * -- .
  • - 保存后重启 MySQL 服务,让改动生效。
  • - 若使用 Docker 部署,则需在 docker run 时映射端口: doker run --name mysql -e MYSQL_ROOT_PASSWORD=root -v /data:/var/lib/mysql -d -P mysql:5.7  其中-‘-P’会自动映射宿主机随机端口到容器3306。你也可以手动指定: -P hostPort:containerPort。至于(注意,如果你想让容器对外暴露标准端口。 可以写成“-P8080:3306”而不是“-P”)。

    获取并验证对方 IP 地址

    • - 对方电脑可以通过命令行输入 windows> ipconfig /all  查看当前IPv4地址;或者在浏览器搜索 whoami.myip.com  获取公网 IP。
    • - 如对方使用 DHCP,可联系管理员请求固定租约。或者在路由器上设置 DHCP 保留,将该设备的 MAC 地址绑定到固定 IP 上。
    • - 在你的客户端配置文件中更新新 IP。例如:
      至于jdbc,mysql://192.168.x.x:3306/your_db?useSSL=false&serverTimezone=UTC
      <\/pre>

    确认数据库名称存在且大小写匹配

    Mysql 默认对表名区分大小写取决于操作程序。在 Linux 上常区分,在 Windows 上不区分。建议先通过远程工具登录,接下来执行:

    SHOW DATABASES LIKE 'your_db';SHOW TABLES,<\/pre>
    

    三、常见错误排查清单

       
      
      
      
      
      
      
      <-- use your own icons if needed -->
      请打开“services.msc”。找到“MySQL”服务,并确认其状态为“正在运行”。如果不是请右键点击“启动”。如果状态显示为“已停止”,可以尝试重新安装或升级驱动。<-- description end -->
      <-- next step start -->
      <-- step icon placeholder -->
      <-- step details -->
      

    错误码 / 信息片段可能原因对应方法步骤
    1045 : Access denied for user 'user'@'host'账户无权访问指定主机/数据库 使用者名/密码错误 GRANT 权限不足
    1. 确认使用者名、密码及主机匹配
    2. 执行 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';FLUSH PRIVILEGES;其实,
    1137 : Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'Unix socket 方法不匹配或服务未跑起来 Windows 下常见是 path 指向 `C:\\xampp\\mysql\\tmp\\mysql.sock` 错误
    1. 检查 my.cnf 中 socket 方法是否正确并与 client 匹配
    2. 确保 mysqld 已经启动并监听对应套接字
    2003 : Can't connect to MySQL server on '' DNS 未解析主机名 或 主机名为空导致连接失败
    1. 使用 IP 地址代替域名测试
    2. 检查 hosts 文件是否有误映射 \t\t\t\t\t\t\t\t\t\t\r \r \r \r \r \r \r              \r                                  \r                    \u000c\u000c\u000c\u000c\u000c\u000c\u000c\u000c\b\b\b\b\b\b\b\b\b\b\x05\x02\x03\x02\x01\x01\x04'\r        …\t ,…,…,…,…...    \,,…... ,..\t.. .. . . . . .. .. .. ... . . . .. . ... ….. etc.\r \t...\r \t...\r   ... etc.\r \t...\r \t...\r... etc.\r&# x23;\t ...\u0018...\u0018...\u0018...\u0018...  ….. ......... …,…,…— —–​,…​......​,…,​......." />
    111 : Connection refused at tcp://xxx.xxx.xxx.xxx:3306 in connection attempt #1 after connecting in milliseconds.服务器拒绝TCP连接 对方机器没有开启 MySql 服务或未监听此端口!
      检查 iptables 是否有 DROP 或 REJECT 对应规则: 确认服务正在监听: <-telnet xxx.xxx.xxx.xxx 3306><-telnet>开启服务: <-systemctl enable mysql.service --now><-systemctl〉;

标签:数据库
其实,

这篇文章共计2309个文字。预计阅读时间需要10分钟。

导语

因为信息化时代的到来数据库技术在各行各业中的应用日益广泛。MySQL这款开源的关系型数据库管理程序,以其稳定性、易用性等特点受到广大使用者的青睐。只是在使用过程中,有些使用者可能会遇到无法连接到别人电脑的MySQL数据库的问题。

为什么我总是无法成功连接到别人电脑上的MySQL数据库呢?这到底是怎么回事呢?

下面内容将方便你定位问题根源,并给出切实可行的方法。话说回来,

一、原因分析

  1. 网络连接问题

    如果你与目标电脑不在同一个局域网内。直接通过IP访问很可能被路由器或防火墙阻断。建议先用 ping 目标IP 命令确认网络连通性;若无法ping通,需要检查路由器、VPN或公网端口映射是否正确。

  2. 权限问题

    即使网络正常。如果MySQL账户没有相应权限,也会返回“Access denied”。请确认使用者名、密码和主机地址已在User表中正确授权。必要时使用管理员账号执行 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password';FLUSH PRIVILEGES;

    为什么我总是无法成功连接到别人电脑上的MySQL数据库呢?这到底是怎么回事呢?
  3. 防火墙设置

    Windows Defender 防火墙或第三方防火墙默认阻止外部访问3306端口。请在控制面板→程序和安全→Windows Defender 防火墙→允许应用或功能通过Windows Defender 防火墙中。确保MySQL已勾选为允许,并开启入站规则。不过,

  4. MySQL服务未启动或监听错误

    打开服务管理器。确认“MySQL”或“MySQL80”等服务状态为运行;若未运行,可右键选择启动;若已启动但仍报错,检查 段下的 bind-address=127.0.0.1 是否限制了远程访问;若是请改为 * 或目标服务器IP。

  5. IP地址问题

    A/B两台电脑若采用DHCP获取动态IP,则每次重启后可能变更。 建议使用静态IP,或者在路由器上设置DHCP固定租约; 怎么说呢,记录当前IP以便随时更新连接参数。

  6. 数据库名称错误 / 数据库不存在

    If you attempt to connect to a non‑existent database name。MySQL will reject connection with “Unknown database”. Always double‑check database name and ensure it exists on server.

二、解决方法一览表

检查并启动 MySQL 服务

修改防火墙设置

调整 MySQL 配置文件

Mysql 配置文件 my.ini / my.cnf 位于安装目录下:

  • - 确认:  # bind-address = 127.0.0.1 # 默认仅本机可访问 bind-address = * # 或者改成服务器实际 IP port = 3306 socket = /var/run/mysqld/mysqld.sock key_buffer_size = 16M max_allowed_packet=64M thread_stack=128K thread_cache_size=8 query_cache_type=1 query_cache_size=32M log-error=/var/log/mysql/error.log slow_query_log_file=/var/log/mysql/slow.log long_query_time=5 log_warnings=4 expire_logs_days=7 max_binlog_size=100M max_connections=500 wait_timeout=28800 interactive_timeout=28800 # 如果开启了 binlog: # log_bin=mysql-bin # server-id = 1 # relay_log=mysql-relay-bin # auto_increment_increment =10 -- 禁止 IPv6 如果你不想支持 IPv6,可注释掉对应条目-- -- 对外监听配置: # port = 3306 # bind-address = * -- .
  • - 保存后重启 MySQL 服务,让改动生效。
  • - 若使用 Docker 部署,则需在 docker run 时映射端口: doker run --name mysql -e MYSQL_ROOT_PASSWORD=root -v /data:/var/lib/mysql -d -P mysql:5.7  其中-‘-P’会自动映射宿主机随机端口到容器3306。你也可以手动指定: -P hostPort:containerPort。至于(注意,如果你想让容器对外暴露标准端口。 可以写成“-P8080:3306”而不是“-P”)。

    获取并验证对方 IP 地址

    • - 对方电脑可以通过命令行输入 windows> ipconfig /all  查看当前IPv4地址;或者在浏览器搜索 whoami.myip.com  获取公网 IP。
    • - 如对方使用 DHCP,可联系管理员请求固定租约。或者在路由器上设置 DHCP 保留,将该设备的 MAC 地址绑定到固定 IP 上。
    • - 在你的客户端配置文件中更新新 IP。例如:
      至于jdbc,mysql://192.168.x.x:3306/your_db?useSSL=false&serverTimezone=UTC
      <\/pre>

    确认数据库名称存在且大小写匹配

    Mysql 默认对表名区分大小写取决于操作程序。在 Linux 上常区分,在 Windows 上不区分。建议先通过远程工具登录,接下来执行:

    SHOW DATABASES LIKE 'your_db';SHOW TABLES,<\/pre>
    

    三、常见错误排查清单

       
      
      
      
      
      
      
      <-- use your own icons if needed -->
      请打开“services.msc”。找到“MySQL”服务,并确认其状态为“正在运行”。如果不是请右键点击“启动”。如果状态显示为“已停止”,可以尝试重新安装或升级驱动。<-- description end -->
      <-- next step start -->
      <-- step icon placeholder -->
      <-- step details -->
      

    错误码 / 信息片段可能原因对应方法步骤
    1045 : Access denied for user 'user'@'host'账户无权访问指定主机/数据库 使用者名/密码错误 GRANT 权限不足
    1. 确认使用者名、密码及主机匹配
    2. 执行 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';FLUSH PRIVILEGES;其实,
    1137 : Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'Unix socket 方法不匹配或服务未跑起来 Windows 下常见是 path 指向 `C:\\xampp\\mysql\\tmp\\mysql.sock` 错误
    1. 检查 my.cnf 中 socket 方法是否正确并与 client 匹配
    2. 确保 mysqld 已经启动并监听对应套接字
    2003 : Can't connect to MySQL server on '' DNS 未解析主机名 或 主机名为空导致连接失败
    1. 使用 IP 地址代替域名测试
    2. 检查 hosts 文件是否有误映射 \t\t\t\t\t\t\t\t\t\t\r \r \r \r \r \r \r              \r                                  \r                    \u000c\u000c\u000c\u000c\u000c\u000c\u000c\u000c\b\b\b\b\b\b\b\b\b\b\x05\x02\x03\x02\x01\x01\x04'\r        …\t ,…,…,…,…...    \,,…... ,..\t.. .. . . . . .. .. .. ... . . . .. . ... ….. etc.\r \t...\r \t...\r   ... etc.\r \t...\r \t...\r... etc.\r&# x23;\t ...\u0018...\u0018...\u0018...\u0018...  ….. ......... …,…,…— —–​,…​......​,…,​......." />
    111 : Connection refused at tcp://xxx.xxx.xxx.xxx:3306 in connection attempt #1 after connecting in milliseconds.服务器拒绝TCP连接 对方机器没有开启 MySql 服务或未监听此端口!
      检查 iptables 是否有 DROP 或 REJECT 对应规则: 确认服务正在监听: <-telnet xxx.xxx.xxx.xxx 3306><-telnet>开启服务: <-systemctl enable mysql.service --now><-systemctl〉;

标签:数据库