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

Xamarin应用使用相同MySQL连接串运行提示无法连接指定主机如何解决

问题根因
  • 网络环境差异:WinForms运行在Windows主机原生网络环境,而Xamarin应用运行在移动模拟器/真机的独立网络栈中。如果你的连接串中Server填的是127.0.0.1/localhost,模拟器/真机会把地址指向自身而非主机,自然无法访问主机上的MySQL服务。
  • 网络权限缺失:安卓默认禁用应用网络访问权限,未在清单文件中声明INTERNET权限时,所有网络请求会被系统直接拦截。
  • MySQL访问授权限制:默认MySQL用户仅允许本机IP访问,WinForms运行在主机上符合授权规则,而模拟器/真机的IP不在授权列表中,会被服务端拒绝连接。
  • 依赖包兼容性问题:Xamarin.MySql.Data包更新停滞,对MySQL 8.0+默认的caching_sha2_password认证方式支持不完善,而WinForms使用的MySql.Data包通常版本更高,对新认证方式适配更好,所以会出现同一连接串两端表现不一致的情况。
修复方案
  • 修正连接串服务器地址
    • 安卓模拟器访问主机MySQL时,将Server值替换为10.0.2.2(安卓模拟器预留的指向宿主主机的IP)
    • 真机测试时,确保设备与MySQL主机处于同一局域网,将Server值替换为MySQL主机的局域网IP
  • 配置网络权限
    打开安卓项目的Properties/AndroidManifest.xml文件,添加网络访问权限声明:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 放开MySQL访问授权
    登录MySQL执行以下命令,允许对应账号从非本机IP访问,执行后刷新权限生效:
    GRANT ALL ON myDataBase.* TO 'myUsername'@'%' IDENTIFIED BY 'myPassword';
    FLUSH PRIVILEGES;
    -- 若使用MySQL8.0+,同时修改认证方式为兼容的mysql_native_password
    ALTER USER 'myUsername'@'%' IDENTIFIED WITH mysql_native_password BY 'myPassword';
    FLUSH PRIVILEGES;
    
  • 替换兼容依赖包
    卸载现有Xamarin.MySql.Data包,改用维护更活跃、兼容性更好的MySqlConnector包,适配Xamarin平台和MySQL全版本认证逻辑。
  • 修复现有代码安全与异步逻辑问题
    你当前使用字符串拼接SQL存在SQL注入漏洞,且异步打开连接后同步执行查询会阻塞UI线程,修正后的参考代码如下:
    MySqlConnection conn = new MySqlConnection("Server=替换后的正确地址;Database=myDataBase;Uid=myUsername;Pwd=myPassword;");
    await conn.OpenAsync();
    
    // 使用参数化查询避免SQL注入
    MySqlCommand cmd = new MySqlCommand("SELECT * FROM users WHERE USERNAME = @username AND PASSWORD = @password", conn);
    cmd.Parameters.AddWithValue("@username", username.Text);
    cmd.Parameters.AddWithValue("@password", password.Text);
      
    // 异步执行查询避免阻塞UI
    MySqlDataReader rdr = await cmd.ExecuteReaderAsync();
    
    if(rdr.HasRows)
    {
        Toast.MakeText(this, "Successfully Logged In", ToastLength.Short).Show();
    }
    else
    {
        Toast.MakeText(this, "Invalid Username/Password", ToastLength.Short).Show();
    }
    

内容的提问来源于stack exchange,提问作者Alfe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:54:00