我想给一个用户在数据库上的所有权限,而不使它成为管理员。 我想这样做的原因是,目前DEV和PROD是同一集群上的不同db,所以我不希望用户能够更改生产对象,但必须能够更改DEV上的对象。

我试着:

grant ALL on database MY_DB to group MY_GROUP;

但它似乎没有给予任何许可。

然后我试着:

grant all privileges on schema MY_SCHEMA to group MY_GROUP;

它似乎允许我创建对象,但不允许我在该模式上查询\删除属于其他用户的对象

我可以继续在MY_SCHEMA上给用户USAGE权限,但是它会抱怨没有对表的权限…

所以我想我的问题是:是否有任何简单的方法将所有权限赋予一个用户在数据库上?

我在PostgreSQL 8.1.23工作。


当前回答

在PostgreSQL 12及以后版本中,可以将数据库中表的所有权限授予角色/用户/帐户。

语法为:

GRANT ALL ON table_name TO role_name;

如果你想将它授予数据库中的所有表,那么语法将是:

GRANT ALL ON ALL TABLES TO role_name;

如果你想将它授予数据库中模式的所有表,那么语法将是:

GRANT ALL ON ALL TABLES IN SCHEMA schema_name TO role_name;

注意:请记住,在将数据库的特权授予用户之前,您需要选择数据库。

资源:PostgreSQL GRANT

这是所有

我希望这对你们有帮助

其他回答

赋予一个用户PostgreSQL数据库的所有权限:

命令:

grant all privileges on database [database_name] to [database_user_name];

例子:

grant all privileges on database studentdb to shaifullah;

OR

GRANT ALL PRIVILEGES ON DATABASE studentdb TO shaifullah;

我在PostgreSQL 9.4.15数据库中添加了一个角色“eSumit”,并为该角色提供了所有权限:

CREATE ROLE eSumit;

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO eSumit;

GRANT ALL PRIVILEGES ON DATABASE "postgres" to eSumit;

ALTER USER eSumit WITH SUPERUSER;

还检查了pg_table条目通过:

Select * from pg_roles;

数据库查询快照:

GRANT ALL ON SCHEMA schema_name TO user_name;
GRANT ALL PRIVILEGES ON DATABASE "my_db" to my_user;

在PostgreSQL 12及以后版本中,可以将数据库中表的所有权限授予角色/用户/帐户。

语法为:

GRANT ALL ON table_name TO role_name;

如果你想将它授予数据库中的所有表,那么语法将是:

GRANT ALL ON ALL TABLES TO role_name;

如果你想将它授予数据库中模式的所有表,那么语法将是:

GRANT ALL ON ALL TABLES IN SCHEMA schema_name TO role_name;

注意:请记住,在将数据库的特权授予用户之前,您需要选择数据库。

资源:PostgreSQL GRANT

这是所有

我希望这对你们有帮助