我正在使用AWS RDS PostgreSQL构建应用程序。
我需要允许一个群组使用CREATE, INSERT INTO
和UPDATE
语句,但同时不允许他们使用DROP TABLE
或DROP DATABASE
。
有没有办法在数据库层上执行此操作,因为我不希望在服务器端层执行此操作?谢谢。
答案 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
可以执行这些功能。
INSERT
和UPDATE
权限授予函数内的luser
。
文档链接:
语言PL/pgSQL在PostgreSQL中编写函数
CREATE FUNCTION
SQL sommand