MySQL 用户级运行时
ChatData 第一版 MySQL 能力已经落到 chatdata mysql ...。它的定位是给 ChatArch/ChatTea 这类本机服务提供一个免 sudo、免 Docker 的数据库运行时。
目录布局
默认根目录来自 ChatEnv 的 ChatArch home:
<chatdata-home>/
downloads/ # 官方 MySQL tarball 和校验文件
runtimes/mysql/8.4.6/ # 解压后的 MySQL runtime
runtimes/mysql/current -> 8.4.6
instances/mysql/default/
my.cnf
data/
run/mysql.sock
run/mysqld.pid
logs/error.log
tmp/
第一版默认 MySQL 版本是 8.4.6,默认实例名是 default,默认端口是 3307,只监听 127.0.0.1。
安装 runtime
chatdata mysql doctor
chatdata mysql install --version 8.4.6
install 会从 MySQL 官方 archive 下载 generic Linux tarball,读取 .md5 sidecar 做校验,安全解压到 <chatdata-home>/runtimes/mysql/<version>,然后运行 mysqld --version 做 smoke。
初始化并启动实例
chatdata mysql instance init --name default --version 8.4.6 --port 3307
chatdata mysql service install --name default --version 8.4.6
chatdata mysql service start --name default
chatdata mysql client ping --name default --version 8.4.6
chatdata mysql client query --name default --version 8.4.6 --sql 'SELECT VERSION();'
实例使用 mysqld --initialize-insecure 初始化,本地 root 默认空密码,适合作为本机开发/自托管服务的初版能力。默认只通过 localhost/socket 使用,不对公网开放。
数据库和导入
给 Gitea 这类服务创建 database:
chatdata mysql database create gitea --name default --version 8.4.6
默认使用:
CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
utf8mb4_bin 是大小写敏感 collation,避免 Gitea 在启动/migrate 时提示 case-insensitive collation 风险。
实例名和 database 名会用于本地路径、systemd unit 名或 SQL identifier。第一版只接受字母、数字、点、下划线和短横线,避免路径穿越或意外 SQL 名称。
ChatData Python API 还提供 ensure_database_user(...),用于上层工具创建业务用户并授予单库权限。ChatTea 的 --mysql-user / --mysql-password-env 就会调用这个 helper;密码通过 stdin 写给 mysql client,不会出现在命令行参数里。
导入 SQL:
chatdata mysql client import \
--name default \
--version 8.4.6 \
--database gitea \
--file gitea-db.sql
执行查询时也可以选择 database:
chatdata mysql client query \
--name default \
--version 8.4.6 \
--database gitea \
--sql 'SHOW TABLES;'
运维命令
chatdata mysql service status --name default
chatdata mysql service logs --name default --lines 100
chatdata mysql service restart --name default
chatdata mysql service stop --name default
service install 写入 user systemd unit:
~/.config/systemd/user/chatdata-mysql-default.service
它只引用用户目录里的 runtime 和 instance,不写系统目录。