PostgreSQL 中如何让某些组只能创建和编辑但不能删除(删除)表?

How to allow certain groups only to create and edit but not delete (drop) tables in PostgreSQL?

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

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

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

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

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

然后creator运行

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

以便luser可以执行功能。

INSERTUPDATE 权限被授予函数内部的 luser

文档链接: