文档首页/ 云数据库 RDS/ 常见问题/ 数据库权限/ 普通用户在postgres数据库下创建对象失败
更新时间:2024-04-24 GMT+08:00

普通用户在postgres数据库下创建对象失败

问题描述

  • 普通用户创建schema失败

    命令:CREATE SCHEMA my_schema;

    报错:ERROR: permission denied for database postgres

  • 普通用户创建表失败

    命令:CREATE TABLE my_table(id int PRIMARY KEY,name VARCHAR(30));

    ERROR: permission denied for schema public

解决方法

云数据库 RDS for PostgreSQL禁止普通用户在postgres数据库创建对象,您可以使用root用户在postgres数据库下创建对象。

root用户可在postgres数据库下创建对象需要内核版本为支持root提权的版本,具体请参见root用户权限说明

root用户权限说明

RDS for PostgreSQL开放了root用户权限。为了便于用户使用RDS for PostgreSQL并保证在无操作风险的前提下,为root用户在特定场景进行了提权。

各个版本root用户提权情况见下表。

表1 root用户权限说明

版本

是否提权

提权起始版本

pgcore9

不涉及

pgcore10

不涉及

pgcore11

11.11

pgcore12

12.6

pgcore13

13.2

pgcore14

14.4

pgcore15

15.4

pgcore16

16.2

root提权涉及以下场景:

  • 创建事件触发器
  • 创建包装器
  • 创建逻辑复制-发布
  • 创建逻辑复制-订阅
  • 查询和维护复制源
  • 创建replication用户
  • 创建全文索引模板以及Parser
  • 对系统表执行vacuum
  • 对系统表执行analyze
  • 创建插件
  • 授予用户某个对象的权限