You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中是否可以在Catalogs下创建自定义schema?

PostgreSQL 自定义schema归入Catalogs分类实现方案

实现目标

  • 将自定义的工具函数、视图存储到独立schema,与普通用户业务schema隔离
  • 该schema自动归入pgAdmin等工具的Catalogs分类,不显示在普通Schemas列表中

操作步骤

1. 创建独立隔离的自定义schema

首先创建专属schema,同时回收公开权限实现访问隔离:

-- 替换为你要使用的schema名,例如custom_sys
CREATE SCHEMA custom_sys;

-- 收回public角色的默认访问权限,避免普通用户随意访问
REVOKE ALL ON SCHEMA custom_sys FROM public;

-- 按需给管理员角色授权访问
GRANT USAGE, CREATE ON SCHEMA custom_sys TO postgres;

后续你所有要收纳的工具函数、视图都可以创建到该schema下。

2. 配置为系统级schema归入Catalogs分类

pgAdmin等客户端判断schema是否属于Catalogs分类的核心依据是该schema是否被标记为系统schema,PostgreSQL提供了官方配置方式无需修改系统表:

-- 替换custom_sys为你的自定义schema名,永久生效到当前数据库
ALTER DATABASE 你的数据库名 SET system_schemas = 'pg_catalog, information_schema, custom_sys';

-- 如果是模板数据库要全局生效,执行以下语句,后续所有从模板创建的数据库都会继承配置
ALTER DATABASE template1 SET system_schemas = 'pg_catalog, information_schema, custom_sys';

配置完成后执行重载生效:

SELECT pg_reload_conf();

效果验证

重启pgAdmin并刷新对应数据库节点,展开Catalogs分类即可看到你的自定义schema,普通Schemas列表不会显示该schema,完全符合隔离需求。

注意事项

  • 仅需给业务用户授予对应函数/视图的访问权限即可,无需给用户开放schema的USAGE权限,进一步保证环境整洁
  • 不要直接修改pg_namespace等系统表的内置属性,通过system_schemas参数配置是官方支持的安全方案

内容的提问来源于stack exchange,提问作者Reinsbrain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:57:04