PostgreSQL 部署脚本
本目录提供在测试/预发布环境快速拉起 PostgreSQL 的脚本,复用线上同名数据库与账号,方便迁移/恢复。
目录结构
create_databases.sql:创建四个业务库与对应角色(可多次执行,存在则跳过)。bootstrap.ps1:PowerShell 包装脚本,调用psql执行 SQL。seed_tenant_seckill_permissions.sql:补齐租户端秒杀活动权限码、菜单权限与角色授权映射(可重复执行)。seed_tenant_new_customer_permissions.sql:补齐租户端新客有礼权限码、菜单权限与角色授权映射(可重复执行)。seed_tenant_punch_card_permissions.sql:补齐租户端次卡管理权限码、菜单权限与角色授权映射(可重复执行)。seed_tenant_calendar_permissions.sql:补齐租户端营销日历权限码、菜单权限与角色授权映射(可重复执行)。seed_tenant_customer_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。 - 参考满减权限映射,补齐角色模板与租户角色的秒杀权限授权。
新客有礼权限补齐
在 takeout_identity_db 执行:
psql -h <host> -p <port> -U identity_user -d takeout_identity_db -f .\seed_tenant_new_customer_permissions.sql
脚本会完成:
- 新增/修正
tenant:marketing:new-customer:*权限码。 - 更新新客有礼菜单 (
/marketing/new-customer/index) 的RequiredPermissions、MetaPermissions与AuthListJson。 - 参考满减权限映射,补齐角色模板与租户角色的新客有礼权限授权。
次卡管理权限补齐
在 takeout_identity_db 执行:
psql -h <host> -p <port> -U identity_user -d takeout_identity_db -f .\seed_tenant_punch_card_permissions.sql
脚本会完成:
- 新增/修正
tenant:marketing:punch-card:*权限码。 - 更新次卡管理菜单 (
/marketing/punch-card/index) 的RequiredPermissions、MetaPermissions与AuthListJson。 - 参考满减权限映射,补齐角色模板与租户角色的次卡管理权限授权。
营销日历权限补齐
在 takeout_identity_db 执行:
psql -h <host> -p <port> -U identity_user -d takeout_identity_db -f .\seed_tenant_calendar_permissions.sql
脚本会完成:
- 新增/修正
tenant:marketing:calendar:*权限码。 - 更新营销日历菜单 (
/marketing/calendar/index) 的RequiredPermissions、MetaPermissions与AuthListJson。 - 参考满减权限映射,补齐角色模板与租户角色的营销日历权限授权。
客户管理权限补齐
在 takeout_identity_db 执行:
psql -h <host> -p <port> -U identity_user -d takeout_identity_db -f .\seed_tenant_customer_permissions.sql
脚本会完成:
- 新增/修正
tenant:customer:*权限码(list/profile/analysis)。 - 更新客户菜单 (
/customer/list|profile|analysis) 的RequiredPermissions、MetaPermissions与AuthListJson。 - 按订单列表权限映射补齐客户列表(view/manage)与客户画像(profile/view)角色模板和租户角色授权;
analysis不做角色映射。
常见问题
| 问题 | 处理方式 |
|---|---|
psql : command not found |
确认 PostgreSQL bin 目录已加入 PATH。 |
permission denied to create database |
改用具有 CREATEDB 权限的管理员执行脚本。 |
| 需要删除库 | 先 DROP DATABASE xxx,再运行脚本重新创建。 |