MAUI移动端无法连接远程MySQL,Windows调试正常求助
问题解决思路
核心原因
移动设备(Android)连接未加密的MySQL服务器时,MySqlConnector默认启用了SSL认证检查,而服务器未配置SSL,导致认证失败;Windows环境下因系统SSL策略或组件默认行为差异,可正常连接。
解决方案
1. 禁用SSL验证
修改ConnectToDatabase方法中的连接字符串构建器,强制不使用SSL:
var builder = new MySqlConnectionStringBuilder { Server = dbServer, Database = dbName, UserID = dbUser, Password = dbPassword, SslMode = MySqlSslMode.None // 添加此行禁用SSL检查 };
2. 配置Android网络权限
在MAUI项目的Platforms/Android/AndroidManifest.xml中添加必要网络权限,确保应用能建立网络连接:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
3. 修复SQL注入漏洞
当前代码直接拼接用户名到SQL语句,存在严重安全风险,改为参数化查询:
public static bool VerifyLogin(string username, string password) { string pwd = string.Empty; if (connection == null) { ConnectToDatabase(); } var command = connection.CreateCommand(); // 使用参数化查询避免注入 command.CommandText = "SELECT password FROM user WHERE username = @username;"; command.Parameters.AddWithValue("@username", username); var reader = command.ExecuteReader(); while (reader.Read()) { pwd = reader["password"].ToString(); return password == pwd; } return false; }
4. 额外排查项
- 确认远程MySQL服务器防火墙允许移动设备IP访问3306端口
- 测试移动设备网络是否能正常连通服务器IP(可通过ping、telnet工具检测3306端口)
内容的提问来源于stack exchange,提问作者DaveR
相关产品推荐
相关产品推荐

