普通用户在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用户提权情况见下表。
版本 | 是否提权 | 提权起始版本 |
|---|---|---|
pgcore9 | 否 | 不涉及 |
pgcore10 | 否 | 不涉及 |
pgcore11 | 是 | 11.11 |
pgcore12 | 是 | 12.6 |
pgcore13 | 是 | 13.2 |
pgcore14 | 是 | 14.4 |
pgcore15 | 是 | 15.4 |
pgcore16 | 是 | 16.2 |
pgcore17及以上 | 是 | 不涉及 |
root提权涉及以下场景:
- 创建事件触发器
- 创建包装器
- 创建逻辑复制-发布
- 创建逻辑复制-订阅
- 查询和维护复制源
- 创建replication用户
- 创建全文索引模板以及Parser
- 对系统表执行vacuum
- 对系统表执行analyze
- 创建插件
- 授予用户某个对象的权限

