如何在Termux中实现跨设备连接MariaDB数据库?
解决Termux中MariaDB允许远程连接的问题
1. 修改MariaDB绑定地址(关键步骤)
Termux中的MariaDB默认仅监听localhost,需修改配置让它对所有网卡开放:
- 编辑配置文件:
nano $PREFIX/etc/my.cnf.d/server.cnf - 在
[mysqld]区块中添加或修改:bind-address = 0.0.0.0 - 保存退出后,重启MariaDB服务:
mariadb-service restart
2. 创建并授权远程访问用户
确保用户拥有跨IP访问的权限,避免使用仅限定localhost的用户:
- 登录MariaDB:
mysql -u root -p - 创建允许所有IP访问的用户(可将
%替换为特定IP/网段,比如192.168.1.%来缩小访问范围):CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_strong_password'; - 授予用户对应权限(示例为全权限,可根据需求调整):
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; - 刷新权限使更改生效:
FLUSH PRIVILEGES; - 退出MariaDB:
EXIT;
3. 开放Termux与手机系统的端口
- Termux中安装iptables并开放3306端口:
pkg install iptables -y iptables -A INPUT -p tcp --dport 3306 -j ACCEPT - 若手机开启了系统防火墙,需允许3306端口通过,或直接给Termux应用开放完整网络权限。
4. 局域网连接测试
- 获取手机的局域网IP:执行
ip addr show wlan0,找到inet字段后的地址(比如192.168.1.100) - 在其他设备上验证连接:
- 用MySQL客户端:
mysql -h 192.168.1.100 -u remote_user -p - 用Python代码连接:
import mysql.connector conn = mysql.connector.connect( host="192.168.1.100", user="remote_user", password="your_strong_password", database="your_target_db" )
- 用MySQL客户端:
5. 互联网远程连接(需额外配置)
要通过互联网连接,需在路由器上做端口映射:
- 登录路由器管理后台,找到端口转发/虚拟服务器设置
- 添加规则:将路由器的3306端口转发到手机局域网IP的3306端口
- 获取公网IP:在Termux中执行
curl ifconfig.me查看 - 注意:公网暴露3306端口存在安全风险,建议:
- 给远程用户设置强密码,并限定其访问IP
- 优先使用VPN或SSH隧道加密连接
- 开启MariaDB的SSL加密功能
常见问题排查
- 重启后仍无法连接:检查配置文件是否正确保存,确认
bind-address已设为0.0.0.0 - 局域网内无法ping通手机:确保设备在同一网络,手机未开启网络隔离功能
- 端口无法访问:用
nc -zv <手机IP> 3306测试端口是否开放,若失败检查iptables规则和系统防火墙 - 用户权限失效:确认用户的主机字段是
%或对应远程IP,且已执行FLUSH PRIVILEGES
内容的提问来源于stack exchange,提问作者TBA5854
相关产品推荐
相关产品推荐

