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

使用Pomelo.EntityFrameworkCore.MySql v6跨设备连接MySQL失败问题

跨设备连接MySQL数据库失败排查(Pomelo.EntityFrameworkCore.MySql v6)

问题场景

本地机器使用Pomelo.EntityFrameworkCore.MySql v6连接MySQL数据库正常,但同一网络下的其他设备连接时报错,错误信息如下:

MySqlConnector.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.
   at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, MySqlConnection connection, Int32 startTickCount, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ServerSession.cs:line 433
   at MySqlConnector.Core.ConnectionPool.ConnectSessionAsync(MySqlConnection connection, String logMessage, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 363
   at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 94
   at MySqlConnector.Core.ConnectionPool.GetSessionAsync(MySqlConnection connection, Int32 startTickCount, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ConnectionPool.cs:line 124
   at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 915
   at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 406
   at MySqlConnector.MySqlConnection.Open() in /_/src/MySqlConnector/MySqlConnection.cs:line 369
   at Microsoft.EntityFrameworkCore.ServerVersion.AutoDetect(String connectionString)
   at MadaSoft.AddDbContextHostBuilderExtensions.<>c__DisplayClass1_0.<GetMySql>b__0(DbContextOptionsBuilder o) in D:\VS Projects\MadaProject\MadaSoft\HostBuilder\AddDbContextHostBuilderExtensions.cs:line 32
   at MadaSoft.ContextFactoryApp.CreateDbContext() in D:\VS Projects\MadaProject\MadaSoft\_DbContext\ContextFactoryApp.cs:line 19
   at MadaSoft.App.MigrateContextApp() in D:\VS Projects\MadaProject\MadaSoft\App.xaml.cs:line 63
   at MadaSoft.App.OnStartupTask() in D:\VS Projects\MadaProject\MadaSoft\App.xaml.cs:line 55
   at MadaSoft.App.OnStartup(StartupEventArgs e) in D:\VS Projects\MadaProject\MadaSoft\App.xaml.cs:line 35

服务注册代码:

Action<DbContextOptionsBuilder> configureDbContext = o =>
{
    o.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));
    o.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
}; 

services.AddDbContext<ContextApp>(configureDbContext);
services.AddSingleton(new ContextFactoryApp(configureDbContext));

使用的连接字符串:
server=localhost; Port=3306; Database=dbName; Uid=root; Pwd=root; sslmode=none; CharSet=utf8;


排查步骤

1. 修正连接字符串的服务器地址

当前连接字符串中server=localhost仅指向本地回环地址,其他设备无法解析到数据库服务器。需替换为数据库所在机器的局域网IP地址(如192.168.1.100):

server=192.168.x.x; Port=3306; Database=dbName; Uid=root; Pwd=root; sslmode=none; CharSet=utf8;

2. 检查MySQL服务的IP绑定设置

MySQL默认可能仅绑定127.0.0.1,限制本地访问:

  • 找到MySQL配置文件(Windows为my.ini,Linux为my.cnf)
  • 修改bind-address参数为0.0.0.0(允许所有IP访问),或指定具体的局域网IP段
  • 修改后重启MySQL服务生效

3. 授权数据库用户的跨IP访问权限

当前root用户可能仅允许本地登录,需授权其从其他IP访问:

-- 允许root从任意IP访问指定数据库
GRANT ALL PRIVILEGES ON dbName.* TO 'root'@'%' IDENTIFIED BY 'root';
-- 刷新权限使设置生效
FLUSH PRIVILEGES;

注:%表示允许所有IP,也可指定具体IP(如192.168.%.%)提升安全性

4. 排查防火墙/安全软件拦截

  • 数据库所在机器的防火墙需开放3306端口,添加允许同网络设备访问的入站规则
  • 临时关闭杀毒软件、安全防护工具,测试是否能正常连接,排除软件拦截问题

5. 验证网络连通性

在客户端设备上执行以下命令:

  • 测试服务器IP可达性:ping 192.168.x.x
  • 测试3306端口开放状态:telnet 192.168.x.x 3306 或 nc -zv 192.168.x.x 3306
  • 确认客户端与服务器处于同一局域网,无VLAN隔离等网络限制

内容的提问来源于stack exchange,提问作者eng_hr.ye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:35:27