如何允许某些组仅在PostgreSQL中创建和编辑但不删除(删除)表?

时间:2017-05-28 21:28:20

标签: postgresql database-administration

我正在使用AWS RDS PostgreSQL构建应用程序。

我需要允许一个群组使用CREATE, INSERT INTOUPDATE语句,但同时不允许他们使用DROP TABLEDROP DATABASE

有没有办法在数据库层上执行此操作,因为我不希望在服务器端层执行此操作?谢谢。

1 个答案:

答案 0 :(得分:1)

您可以创建一个可以执行所有这些操作的特权用户 - 让我们将其称为creator - 以及用于登录数据库的普通用户luser

creator然后使用SECURITY DEFINER定义执行所需CREATE语句的PL / pgSQL函数(可能使用带有EXECUTE语句的动态SQL。)

然后creator运行

REVOKE EXECUTE ON FUNCTION ... FROM PUBLIC;
GRANT EXECUTE ON FUNCTION ... TO luser;

以便luser可以执行这些功能。

INSERTUPDATE权限授予函数内的luser

文档链接: