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

Android Studio通过XAMPP连接物理设备MySQL数据库失败问题排查

解决Android真机无法连接MySQL数据库的问题

我之前也碰到过一模一样的窘境——模拟器跑起来顺得很,真机一测就卡壳在数据库连接上。本质原因是模拟器和真机的网络环境完全不同,咱们一步步来排查修复:

1. 先确认网络环境是否一致

  • 你的真机必须和运行MySQL的服务器处于同一个WiFi局域网里!模拟器默认共享电脑的网络,所以能直接访问192.168.0.12,但真机如果用数据流量或者其他WiFi,肯定连不上这个局域网地址。
  • 可以在真机上用浏览器或者Ping工具(比如Termux)试试能不能通192.168.0.12的3306端口,先排除基础网络不通的问题。

2. 检查MySQL的远程访问配置

MySQL默认是禁止远程连接的,得改两个地方:

修改绑定地址

找到MySQL的配置文件(Windows是my.ini,Linux/macOS是my.cnf),把bind-address改成0.0.0.0(允许所有IP访问),然后重启MySQL服务。

授权root用户远程访问

在MySQL控制台执行以下命令,允许root从你的真机IP访问数据库:

GRANT ALL ON mydb.* TO 'root'@'你的真机IP' IDENTIFIED BY 'test';
FLUSH PRIVILEGES;

如果想简化测试,也可以允许所有IP访问(生产环境不建议):

GRANT ALL ON mydb.* TO 'root'@'%' IDENTIFIED BY 'test';
FLUSH PRIVILEGES;

3. 关闭服务器端的防火墙/安全软件

运行MySQL的电脑如果开了防火墙,一定要开放3306端口(MySQL默认端口),允许局域网内的设备访问。比如Windows防火墙要添加 inbound规则,放行3306端口。

4. 确保真机有网络权限

检查你的AndroidManifest.xml里有没有添加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

模拟器可能默认绕过了权限检查,但真机必须明确声明这个权限才能访问网络。

5. 补全异常排查代码

你的现有代码没有异常捕获块,真机连接失败时根本看不到错误信息!建议加上catch块打印日志,方便定位问题:

try {
    String myUrl = "jdbc:mysql://192.168.0.12/mydb";
    miastoItemList = new ArrayList<>();
    Connection c = DriverManager.getConnection(myUrl, "root", "test");
    Statement statement = c.createStatement();
    String s = "SELECT * FROM city";
    ResultSet rs = statement.executeQuery(s);
    // 处理查询结果...
} catch (SQLException e) {
    e.printStackTrace();
    Log.e("DB_CONN_ERROR", "数据库连接失败: " + e.getMessage());
}

按这个流程排查下来,基本就能解决真机连接的问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:56:17