没有 drop table 权限的 Postgresql 角色

Postgresql role with no drop table permision

是否可以将角色设置为可以访问一个数据库,并具有除删除表之外的所有权限?

不是真的。如果用户可以发出 CREATE TABLE,它也可以为 table 发出 DROP。来自 the docs:

The right to drop an object, or to alter its definition in any way, is not treated as a grantable privilege; it is inherent in the owner, and cannot be granted or revoked.

正如 CREATE TABLE docs 指出的那样:

The table will be owned by the user issuing the command.

没有允许用户创建他们不拥有因此不能删除的 tables 的机制。