PostgreSQL继承了postgres的特权

问题描述

我按照文档使用createuser xxx -g postgres -i创建了一个作为postgres成员的帐户,但是似乎新用户xxx没有postgres的任何特权,例如create user和create db。为什么呢?

解决方法

来自the docs

可以将角色属性LOGINSUPERUSERCREATEDBCREATEROLE视为特殊特权,但是它们绝不会像对数据库对象的普通特权那样被继承。为了使用该属性,您实际上必须SET ROLE担任具有这些属性之一的特定角色。

您的用户有权承担postgres的角色,但它不会继承permission to create a user or database。您需要明确授予(实际上是ALTER ROLE)。 (尽管用户可以自己授予它。)