feat: 支持从 config.yaml 读取 MySQL 配置 (#83)

This commit is contained in:
chengma
2026-08-10 09:24:04 +08:00
parent ad44c3ee86
commit 04a777dc8e
9 changed files with 222 additions and 35 deletions
+26 -6
View File
@@ -90,7 +90,7 @@ go run .
**这个命令是安全的**:Admin 只管理数据,不会连手机、不会下单。放心随便跑。
### 配置顺运宝账号(同步货运单需要,其余四个模块不需要)
### 配置 MySQL 和顺运宝账号
顺运宝数据页的「同步」需要读 `admin/config.yaml`。第一次用要自己建这个文件
(已在 `.gitignore` 里,不会被提交):
@@ -100,7 +100,13 @@ cd D:\chengma\cmautobuy\admin
copy config.example.yaml config.yaml
```
用编辑器打开 `config.yaml`,把 `username` / `password` 改成真实的顺运宝账号密码。
用编辑器打开 `config.yaml`:
- `database:` 填 MySQL 8 的地址、数据库名、账号和密码,Admin 启动必须使用;
- `syb:` 填顺运宝账号密码,只在同步货运单时使用。
两个密码都是明文,只允许保存在这份被 Git 忽略的本机文件里,不得提交、打包、
截图或粘贴到日志和工单。
`[必须]` 密码要加引号,纯数字密码不加引号会被 YAML 解析成整数,前导 0 也会丢:
@@ -159,18 +165,32 @@ syb:
## 6. 数据库在哪里、怎样配置
生产数据在 MySQL 8.4 中。Admin 从环境变量读取连接信息:
生产数据在 MySQL 8.4 中。Windows 本地运行可以直接在被 Git 忽略的
`admin/config.yaml` 中配置:
```yaml
database:
host: 127.0.0.1
port: "3307"
name: autobuy
user: buy
password: "从安全渠道取得"
```
连接线上 MySQL 时仍通过 SSH 隧道,把 `port` 改为隧道的本地端口;禁止开放线上
MySQL 公网端口。线上 systemd 部署继续使用环境变量:
```text
CMAUTOBUY_DB_HOST=127.0.0.1
CMAUTOBUY_DB_PORT=3307
CMAUTOBUY_DB_NAME=<独立数据库名>
CMAUTOBUY_DB_USER=<最小权限账号>
CMAUTOBUY_DB_PASSWORD=<只保存在服务器环境文件中的密码>
CMAUTOBUY_DB_PASSWORD=<从安全渠道取得>
```
密码不得写入 `config.yaml`、仓库、日志或工单。线上 MySQL 只监听本机,
本地开发通过 SSH 隧道连接独立的 `_test` 数据库。
环境变量按字段覆盖 `config.yaml`,所以现有线上部署方式不受影响。生产环境文件和
本地 `config.yaml` 都不得进入仓库、日志或工单;线上 MySQL 只监听本机,本地开发
通过 SSH 隧道连接独立的 `_test` 数据库。
程序旁边的 `data/` 只保留日志、上传文件和迁移前的 SQLite 只读备份: