PostgreSQL 部署脚本
本目录提供在测试/预发布环境快速拉起 PostgreSQL 的脚本,复用线上同名数据库与账号,方便迁移/恢复。
目录结构
create_databases.sql:创建四个业务库与对应角色(可多次执行,存在则跳过)。bootstrap.ps1:PowerShell 包装脚本,调用psql执行 SQL。seed_tenant_seckill_permissions.sql:补齐租户端秒杀活动权限码、菜单权限与角色授权映射(可重复执行)。
前置条件
- 已安装 PostgreSQL 12+,并能以管理员身份访问(默认使用
postgres)。 - 本地已配置
psql可执行命令。
使用方法
cd deploy/postgres
.\bootstrap.ps1 `
-Host 120.53.222.17 `
-Port 5432 `
-AdminUser postgres `
-AdminPassword "超级管理员密码"
脚本会:
- 创建/更新以下角色与库:
app_user/takeout_app_dbidentity_user/takeout_identity_dbdictionary_user/takeout_dictionary_dbhangfire_user/takeout_hangfire_db
- 为库设置 COMMENT,授予 Schema
public的 CRUD 权限。 - 输出执行日志,失败时终止。
自定义
- 如需修改密码或新增库,编辑
create_databases.sql后重新运行脚本。 - 若在本地拉起测试库,可把
Host指向localhost,其余参数保持一致。
秒杀权限补齐
在 takeout_identity_db 执行:
psql -h <host> -p <port> -U identity_user -d takeout_identity_db -f .\seed_tenant_seckill_permissions.sql
脚本会完成:
- 新增/修正
tenant:marketing:seckill:*权限码。 - 更新秒杀菜单 (
/marketing/seckill/index) 的RequiredPermissions、MetaPermissions与AuthListJson。 - 参考满减权限映射,补齐角色模板与租户角色的秒杀权限授权。
常见问题
| 问题 | 处理方式 |
|---|---|
psql : command not found |
确认 PostgreSQL bin 目录已加入 PATH。 |
permission denied to create database |
改用具有 CREATEDB 权限的管理员执行脚本。 |
| 需要删除库 | 先 DROP DATABASE xxx,再运行脚本重新创建。 |