PostgreSQL 权限要求

使用外部 PostgreSQL 时,需要为系统提供一个具备完整权限的数据库账号,单个 database 即可。

系统在运行过程中会根据业务查询和数据处理需要动态创建中间结果表,并在处理完成后删除。Agent 执行任务时也会涉及临时建表操作。部分功能还会通过 CREATE TABLE IF NOT EXISTS 检查并初始化所需表结构。如果使用仅具备只读权限的账号,系统将无法正常启动和运行。

所需权限

权限用途
CONNECT连接指定数据库
CREATE创建运行过程中需要的中间表或功能表
DROP数据处理完成后删除相关表
SELECT查询表数据
INSERT写入中间处理数据
UPDATE更新处理状态或中间数据
DELETE清理表内数据
USAGE访问指定 Schema

权限仅需授予本系统使用的指定数据库和 Schema,无需授予创建数据库、超级用户或其他数据库的访问权限。

参考授权语句

GRANT CONNECT ON DATABASE <database_name> TO <application_role>;
GRANT USAGE, CREATE ON SCHEMA <schema_name> TO <application_role>;

GRANT SELECT, INSERT, UPDATE, DELETE
ON ALL TABLES IN SCHEMA <schema_name>
TO <application_role>;

说明:对于由该账号创建的表,创建者天然拥有删除权限,因此 PostgreSQL 不单独授予 DROPDROP TABLE 由表所有者执行。

必要性说明

  • 缺少 CREATE 权限时,涉及运行时表初始化或中间数据处理的功能将出现 permission denied for schema 等错误。
  • 缺少 DROP 权限时,运行过程中产生的中间表将无法正常清理,导致数据库膨胀。
  • 以上权限属于本系统正常运行所必需的数据库权限,权限不足将导致系统无法启动。