普通用户在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用户权限说明
RDS for PostgreSQL没有开放超级用户权限,但是开放了root用户权限。
为了便于用户使用RDS for PostgreSQL并保证在无操作风险的前提下,为root用户在特定场景进行了提权。
各个版本root用户提权情况见下表。
版本 |
是否提权 |
提权起始版本 |
---|---|---|
Pgcore9 |
否 |
不涉及 |
Pgcore10 |
否 |
不涉及 |
Pgcore11 |
是 |
11.11 |
Pgcore12 |
是 |
12.2.3 |
Pgcore13 |
是 |
13.2.0 |
Pgcore增强版 |
是 |
1.0.17 |
root提权涉及以下场景:
- 创建事件触发器
- 创建包装器
- 创建逻辑复制-发布
- 创建逻辑复制-订阅
- 查询和维护复制源
- 创建replication用户
- 创建全文索引模板以及Parser
- 对系统表执行vacuum
- 对系统表执行analyze
- 创建插件
- 授予用户某个对象的权限
数据库权限所有常见问题
- root帐号为什么没有super权限
- 如何为子用户添加RDS FullAccess权限
- RDS系统权限说明
- RDS ManageAccess权限和DAS权限有什么区别
- RDS for MySQL内置帐户介绍
- 云数据库 RDS for MySQL是否支持多帐号
- 使用DAS登录数据库是否有人数限制,密码多次输入错误有无锁死机制
- 普通用户在postgres数据库下创建对象失败
- 删除RDS for PostgreSQL数据库中的角色失败
- RDS for PostgreSQL数据迁移过程中由于权限问题导致迁移报错
- 如何给RDS for PostgreSQL数据库中的用户赋予REPLICATION权限
- 更改RDS for PostgreSQL数据库中表的OWNER报错
- RDS for SQL Server 2017 企业版主备实例的登录名权限如何同步到只读实例
- RDS for SQL Server中主实例的帐号删除重建后,权限是否会自动同步
- 本地客户端连接实例后如何查看已授权的数据库
more
