实战指南!在Android Termux上搭建MySQL,并用内网穿透实现稳定远程连接

📅 2026/7/13 13:47:18 👁️ 阅读次数 📝 编程学习
实战指南!在Android Termux上搭建MySQL,并用内网穿透实现稳定远程连接

1. 准备工作:Termux基础配置

在安卓手机上搭建MySQL数据库服务器之前,我们需要先配置好Termux环境。Termux是一个强大的Android终端模拟器,它提供了完整的Linux环境,让我们能够在手机上运行各种命令行工具和服务器软件。

首先从F-Droid或Google Play商店安装Termux应用。安装完成后打开Termux,你会看到一个简洁的命令行界面。为了确保后续操作顺利,建议先执行以下基础配置:

pkg update && pkg upgrade

这个命令会更新软件包列表并升级所有已安装的包。接下来安装一些基础工具:

pkg install wget curl git nano

Termux默认的存储空间是隔离的,如果需要访问手机存储,需要运行:

termux-setup-storage

执行后会弹出权限请求,点击"允许"即可。这会在Termux的home目录下创建storage文件夹,链接到手机存储。

2. 安装和配置MariaDB服务器

MariaDB是MySQL的一个流行分支,完全兼容MySQL。在Termux中安装非常简单:

pkg install mariadb

安装完成后,我们需要初始化数据库:

mysql_install_db

这个命令会创建必要的系统数据库和表结构。初始化完成后,可以启动MariaDB服务:

nohup mysqld &

使用nohup&将服务放到后台运行。要验证服务是否正常运行,可以检查进程:

ps aux | grep mysql

默认安装的MariaDB没有设置root密码,这很不安全。我们来设置密码并做一些安全加固:

mysql_secure_installation

按照提示操作:

  1. 当前root密码为空,直接回车
  2. 设置新root密码
  3. 移除匿名用户(选择Y)
  4. 禁止root远程登录(根据需求选择,这里建议选N)
  5. 移除测试数据库(选择Y)
  6. 重新加载权限表(选择Y)

现在可以使用新密码登录MySQL了:

mysql -u root -p

3. 创建可远程访问的数据库用户

为了安全考虑,不建议直接使用root账户进行远程连接。我们创建一个专用用户:

CREATE USER 'remote_user'@'%' IDENTIFIED BY '你的强密码'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

这样我们就创建了一个可以从任何主机连接的数据库用户。如果你希望限制访问来源,可以将%替换为特定IP地址。

4. 安装和配置cpolar内网穿透

由于手机通常处于内网环境,我们需要内网穿透工具将数据库服务暴露到公网。这里使用cpolar,它配置简单且支持TCP协议。

首先添加cpolar的软件源:

mkdir -p $PREFIX/etc/apt/sources.list.d echo "deb [trusted=yes] http://termux.cpolar.com termux extras" >> $PREFIX/etc/apt/sources.list.d/cpolar.list

更新软件包索引并安装cpolar:

pkg update pkg install cpolar

cpolar需要后台服务支持,安装Termux服务组件:

pkg install termux-services

安装完成后需要完全退出并重新打开Termux,然后启动cpolar服务:

sv up cpolar

设置开机自启:

sv-enable cpolar

现在可以在手机浏览器访问cpolar的Web管理界面:http://localhost:9200

5. 创建MySQL隧道映射

登录cpolar Web界面后,点击"隧道管理"->"创建隧道",配置如下:

  • 隧道名称:mysql_tunnel(可自定义)
  • 协议:tcp
  • 本地地址:3306
  • 域名类型:随机临时域名
  • 地区:选择离你最近的区域

点击"创建"按钮后,在隧道列表中可以查看生成的公网地址,格式类似:tcp://3.tcp.cpolar.cn:12345

这个地址就是你的数据库公网访问入口。注意临时域名会在24小时后变化,如果需要固定地址,需要升级到付费套餐。

6. 远程连接测试

现在可以使用任何MySQL客户端工具进行连接测试。这里以Navicat为例:

  1. 打开Navicat,点击"连接"->"MySQL"
  2. 连接名:Termux MySQL
  3. 主机:填写cpolar生成的地址(去掉tcp://前缀)
  4. 端口:cpolar生成的端口号
  5. 用户名:之前创建的remote_user
  6. 密码:你设置的密码

点击"测试连接",如果显示成功,说明配置正确。其他客户端如MySQL Workbench、DBeaver等连接方式类似。

7. 高级配置与优化

为了让这个移动数据库服务器更加实用,我们可以做一些优化:

性能调优:编辑MySQL配置文件(需先安装nano):

nano $PREFIX/etc/my.cnf

添加以下内容调整缓冲区和连接数:

[mysqld] key_buffer_size = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 8 max_connections = 50 query_cache_limit = 1M query_cache_size = 16M

定期备份:创建备份脚本:

nano ~/mysql_backup.sh

内容如下:

#!/bin/bash DATE=$(date +%Y%m%d) BACKUP_DIR="$HOME/storage/downloads/mysql_backup" mkdir -p $BACKUP_DIR mysqldump -u root -p你的密码 --all-databases > $BACKUP_DIR/full_backup_$DATE.sql

添加执行权限:

chmod +x ~/mysql_backup.sh

自动启动:创建启动脚本:

nano ~/.termux/boot/start_mysql.sh

内容:

#!/data/data/com.termux/files/usr/bin/sh nohup mysqld & sleep 5 sv up cpolar

给脚本执行权限:

chmod +x ~/.termux/boot/start_mysql.sh

8. 常见问题解决

连接被拒绝:检查MySQL是否运行:

ps aux | grep mysql

如果没有运行,重新启动:

nohup mysqld &

检查用户权限:

SELECT host, user FROM mysql.user;

确保你的用户有从远程连接的权限。

性能问题:手机硬件资源有限,如果发现数据库响应慢,可以:

  1. 减少最大连接数
  2. 降低缓冲区大小
  3. 避免运行复杂查询

cpolar隧道断开:检查cpolar服务状态:

sv status cpolar

如果停止,重新启动:

sv up cpolar

电池优化:安卓系统可能会在后台终止Termux进程,需要在手机设置中将Termux加入电池优化白名单。

通过以上步骤,你已经成功将安卓手机变成了一个可随时随地访问的MySQL数据库服务器。这个方案特别适合开发测试、个人项目或者小型应用。虽然性能不如专业服务器,但它的便携性和低成本是无可比拟的优势。