feat(agent-db): 引入 db-conn.sh 统一数据库入口,各 agent 改用专用账号
- 新增 scripts/db-conn.sh:按 agent id 反查中文名,读 .env 后经 MYSQL_PWD 转发给 docker exec,口令不进 argv/stdout,--print 只输出占位符 - new-agent.sh 新增 --adopt 模式(为既有 agent 补建库/账号),与 --reset-password 互斥 - AGENTS.md.tpl 与 11 个 workspace-*/AGENTS.md 改用 db-conn.sh,禁用 root 与 docker exec 直连 - mysql-schema-sync 技能改用 MYSQL_PWD_SQL 环境变量,不再硬编码密码 - 设计文档补附录 A 第 8 条:中文键名无法注入 agent 环境的三条实测依据
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "mysql-schema-sync"
|
||||
description: "MySQL 表结构同步最佳实践:跨环境同步 DDL,处理 CREATE/ALTER 失败场景"
|
||||
description: "MySQL 表结构同步:使用 mysqldump 导出 DDL,生成审核脚本,处理跨环境同步的边界场景"
|
||||
---
|
||||
|
||||
# MySQL 表结构同步最佳实践
|
||||
@@ -12,20 +12,23 @@ description: "MySQL 表结构同步最佳实践:跨环境同步 DDL,处理 C
|
||||
## 核心原则
|
||||
|
||||
1. **表名必须带数据库前缀** - 如 `dmp_smdm.dmp_md_item_info`,因为生产实例有多个库
|
||||
2. **不暴露敏感信息** - 脚本中只写库名和表名,IP/密码用环境变量
|
||||
2. **不暴露敏感信息** - 脚本中不写密码,使用 `${MYSQL_PWD_SQL}` 环境变量
|
||||
3. **先验证后执行** - 先 SELECT 确认表结构和数据量
|
||||
4. **CREATE 优先于 ALTER** - 能新建不修改,减少冲突
|
||||
5. **脚本供审核,不直接执行** - 生成的 SQL 脚本需经审核后再执行
|
||||
|
||||
## 脚本生成规范
|
||||
|
||||
### 使用 mysqldump 导出结构
|
||||
|
||||
```bash
|
||||
mysqldump -h SOURCE_HOST -P PORT -u USER -p"PASSWORD" \
|
||||
mysqldump -h SOURCE_HOST -P PORT -u USER -p"${MYSQL_PWD_SQL}" \
|
||||
--no-data --skip-lock-tables \
|
||||
DB_NAME > db_struct.sql
|
||||
```
|
||||
|
||||
> 注意:密码从环境变量读取,不硬编码在脚本中。
|
||||
|
||||
### 脚本格式要求
|
||||
|
||||
```sql
|
||||
@@ -55,10 +58,12 @@ scripts/YYYYMMDD/
|
||||
|
||||
```bash
|
||||
for sql_file in database__*_struct.sql; do
|
||||
mysql -h TARGET_HOST -u root -p"PASSWORD" -D database < "$sql_file"
|
||||
mysql -h TARGET_HOST -u root -p"${MYSQL_PWD_SQL}" -D database < "$sql_file"
|
||||
done
|
||||
```
|
||||
|
||||
> 注意:上述命令仅用于生成执行脚本参考,实际执行前需经审核。
|
||||
|
||||
### ALTER TABLE(修改表)
|
||||
|
||||
1. **检查目标表是否存在**
|
||||
@@ -110,7 +115,7 @@ done
|
||||
|
||||
1. **执行前备份**
|
||||
```bash
|
||||
mysqldump -h TARGET_HOST -u root -p"PASSWORD" \
|
||||
mysqldump -h TARGET_HOST -u root -p"${MYSQL_PWD_SQL}" \
|
||||
--no-data --routines --triggers \
|
||||
database > backup_before_sync.sql
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user