前言

在 Termux 里其实装不了“官方”MySQL,但官方仓库里直接提供了 MariaDB(MySQL 的完全兼容分支),对移动端更轻量,也足够学习/调试使用。
这种部署方式不会影响学习:

  1. SQL 语法 100% 通用
    MariaDB 完全兼容 MySQL 5.7/8.x 的主流语法(SELECT、JOIN、窗口函数、事务、索引、MVCC)。
  2. 引擎层体验无差异
    默认都是 InnoDB,ACID、锁等待、行版本、redo/undo log 机制一样;EXPLAIN 计划格式略有输出顺序差异,不影响调优思路。
  3. 不足的部分
    • MySQL 8 的 CTE/窗口函数 MariaDB 10.6+ 也有;
    • 没有 JSON 数据类型(MariaDB 用 LONGTEXT + 检查约束模拟),但语法 JSON_EXTRACT 兼容;
    • 没有 roles、resource group、clone plugin 等 DBA 高级特性——这些对“开发+调优”阶段学习占比 <5%。
    • 等以后到公司用云数据库,再花 1-2 小时就能补齐。

安装步骤

环境准备

1
2
3
4
5
# 更新源
pkg update && pkg upgrade -y

# 一次性补全常用工具
pkg install -y mariadb termux-services curl

安装并初始化 MariaDB

1
2
pkg install -y mariadb        # 约 80 M,Wi-Fi 下很快
mysql_install_db # 生成系统库,仅需执行一次

首次启动 + root 密码设置

1
2
3
4
5
6
7
8
9
10
11
# ① 先手动起服务(确认无报错)
mysqld_safe & # 默认监听 127.0.0.1:3306

# ② 无密登录
mysql -u root

# ③ 在 MariaDB 提示符里改密、删匿名用户
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
EXIT;

后台托管(Termux 原生)

这步其实没什么必要

装 termux-services 后可以把 MariaDB 当成系统服务启停,比 nohup 更稳:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建服务目录
mkdir -p $PREFIX/var/service/mysqld
cd $PREFIX/var/service/mysqld

# 写入启动脚本
cat > run <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
exec mysqld_safe 2>&1
EOF
chmod +x run

# 立即拉起 & 开机自启
sv up mysqld # 启动
sv-enable mysqld # 设为自启
sv status mysqld # 查看状态

以后关机再进 Termux 会自动带起,无需手动 mysqld_safe &

关闭数据库

1
mysqladmin -u root -p shutdown