重要提醒:本指南基于生产环境安全原则,严格遵循"不重置数据库"的最高准则
如果你在使用agent并且使用prisma开发,那么请你一定要注意prisma的命令安全性,已经第二次重置我的dev环境的数据库了,大无语,推荐claude code公益站【https://agentrouter.org/register?aff=xyQv】
🟢 安全命令(不会清空数据库)
1. 代码生成类命令
命令 | 安全级别 | 作用 | 说明 |
---|
npx prisma generate | ✅ 完全安全 | 生成 Prisma Client 代码 | 只生成 TypeScript 类型,不碰数据库 |
npx prisma format | ✅ 完全安全 | 格式化 schema.prisma 文件 | 纯文件操作,不涉及数据库 |
2. 数据库同步类命令
命令 | 安全级别 | 作用 | 说明 |
---|
npx prisma db push | ✅ 安全 | 同步数据库结构 | 只添加/修改表结构,不删除数据 |
npx prisma migrate dev | ✅ 安全 | 创建和应用迁移 | 创建迁移文件并应用到开发环境 |
npx prisma migrate deploy | ✅ 安全 | 应用迁移到生产环境 | 只应用已创建的迁移文件 |
3. 数据查看类命令
命令 | 安全级别 | 作用 | 说明 |
---|
npx prisma studio | ✅ 只读安全 | 数据库可视化界面 | 只查看数据,不修改任何内容 |
npx prisma db seed | ✅ 安全 | 执行种子数据 | 只插入数据,不删除现有数据 |
4. 状态检查类命令
命令 | 安全级别 | 作用 | 说明 |
---|
npx prisma migrate status | ✅ 只读安全 | 检查迁移状态 | 只查看状态,不执行任何操作 |
npx prisma db pull | ✅ 只读安全 | 从数据库拉取结构 | 只读取数据库结构,不修改 |
🔴 危险命令(会清空数据库)
1. 重置类命令
命令 | 危险级别 | 作用 | 后果 |
---|
npx prisma migrate reset | ❌ 极度危险 | 重置数据库并重新应用迁移 | 完全清空数据库 |
npx prisma db push --force-reset | ❌ 极度危险 | 强制重置数据库结构 | 完全清空数据库 |
2. 删除类命令
命令 | 危险级别 | 作用 | 后果 |
---|
npx prisma migrate resolve --rolled-back <migration> | ❌ 危险 | 回滚特定迁移 | 可能丢失数据 |
npx prisma db execute --stdin | ⚠️ 需谨慎 | 执行自定义 SQL | 取决于 SQL 内容 |
🟡 需谨慎使用的命令
1. 数据操作类
命令 | 谨慎级别 | 作用 | 注意事项 |
---|
npx prisma db execute | ⚠️ 需谨慎 | 执行原始 SQL | 取决于 SQL 内容,可能删除数据 |
npx prisma migrate resolve | ⚠️ 需谨慎 | 解决迁移冲突 | 可能影响数据完整性 |
📋 生产环境最佳实践
✅ 推荐操作流程
- 开发环境:使用
npx prisma migrate dev
创建迁移 - 测试环境:使用
npx prisma migrate deploy
应用迁移 - 生产环境:使用
npx prisma migrate deploy
应用迁移 - 代码生成:使用
npx prisma generate
更新客户端
❌ 禁止操作
- 绝对禁止:在生产环境使用任何
reset
命令 - 绝对禁止:使用
--force-reset
参数 - 绝对禁止:执行可能删除数据的 SQL 语句
🛡️ 安全防护措施
1. 环境变量保护
NODE_ENV=production
DATABASE_URL="mysql://prod_user:${PROD_DB_PASS}@prod.mysql.internal:3306/cps_pro"
2. 备份策略
- 自动备份:生产环境数据库自动备份
- 迁移前备份:执行迁移前手动备份
- 回滚准备:准备回滚方案
3. 权限控制
- 生产环境:限制数据库操作权限
- 开发环境:使用只读权限进行测试
- 代码审查:所有数据库操作需要代码审查
🚨 紧急情况处理
如果误执行了危险命令
- 立即停止:停止所有数据库操作
- 检查备份:查看是否有可用备份
- 联系DBA:联系数据库管理员
- 数据恢复:从备份恢复数据
预防措施
- 命令别名:为危险命令设置别名提醒
- 环境检查:执行前检查当前环境
- 二次确认:重要操作需要二次确认
📚 常用安全命令组合
开发环境
npx prisma migrate dev --name add_user_phone
npx prisma generate
npx prisma migrate status
生产环境
npx prisma migrate deploy
npx prisma generate
npx prisma migrate status
⚠️ 重要提醒
- 永远不要在生产环境使用
reset
命令 - 永远不要使用
--force-reset
参数 - 永远不要在没有备份的情况下执行危险操作
- 永远遵循"不重置数据库"的最高安全准则