feat: 支持从 config.yaml 读取 MySQL 配置 (#83)
This commit is contained in:
@@ -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 只读备份:
|
||||
|
||||
|
||||
@@ -165,6 +165,10 @@
|
||||
|
||||
`[必须]` **不得记录** token、密码、Cookie,也不要把完整请求体无脑打进日志。
|
||||
|
||||
`[必须]` 本机 `admin/config.yaml` 可以保存 MySQL 和顺运宝明文密码,但必须保持
|
||||
Git 忽略且不得随程序打包、截图或粘贴到工单和日志;线上优先使用权限 `600` 的
|
||||
环境文件,环境变量按字段覆盖 YAML。
|
||||
|
||||
## 7. 性能
|
||||
|
||||
规模很小(个位数操作员、集中部署),不要提前优化。但下面几条是基本功:
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
- 源 `admin.db` 必须是 schema v8;工具使用操作系统只读模式和 SQLite `query_only` 打开。
|
||||
- 目标必须是本程序刚建立且业务表为空的独立 MySQL 数据库;任何业务表非空都会拒绝执行。
|
||||
- 不支持覆盖、合并、双写和重复导入。重新演练时新建另一个空测试库。
|
||||
- 数据库密码只放环境变量,不要写入命令历史、仓库、日志或工单。
|
||||
- 迁移命令优先使用环境变量传入数据库密码;Windows 本地也可读取被 Git 忽略的
|
||||
`admin/config.yaml`。两种方式都不得把密码写入命令历史、仓库、日志或工单。
|
||||
- 输出只包含表名和数量,不包含账号、Cookie、Session、订单号或商品明细。
|
||||
|
||||
## 2. 迁移前准备
|
||||
|
||||
Reference in New Issue
Block a user