对于我们学院的用户,我们希望提供一种快速简便的方法来使用 PostgreSQL 数据库。目前,我们已经能够通过 LDAP(PAM)对所有用户进行身份验证。这非常有效。我们只需执行一次,create user
用户就可以使用 LDAP 支持的密码登录数据库。
然而,这种简单的设计也存在一些缺点:
用户可能需要几个一次性角色和一次性密码,这样他们就不需要存储他们的 LDAP 密码。
用户应该能够自由创建自己的数据库。(并且他们应该能够将其数据库的权限授予其他用户。)
因此,简而言之,每个具有名称的 LDAP 支持用户username
都应该被允许创建其他角色,只要它们以username_
; 为前缀,数据库也是如此。(也欢迎其他建议。)LDAP 支持的用户将成为整个username_
数据库空间的超级用户。
我曾看到安装对 MySQL 执行类似操作(通配符授予),但我想知道这对 PostgreSQL 是否也适用。
答案1
看来您应该能够使用 Postgres 函数来执行此操作,这些函数由既可以创建数据库又可以创建用户的用户创建和拥有;一个函数用于创建数据库,另一个函数用于创建用户。关键是SECURITY DEFINER
在函数定义中指定子句(有关详细信息,请参阅文档。)。让第一个函数创建数据库并将所有权等设置为current_user
。第二个函数用于创建用户,可以根据验证要创建的用户/角色current_user
以确保其符合您的命名标准。