我先创建一个用户:CREATE USER user1;
然后取消用户在postgres数据库中的所有权限:REVOKE ALL ON DATABASE postgres FROM user1;
执行这两步后,user1依然可以连接数据库postgres,而且还可以在其中建表,这是为什么呢?如何在PostgreSQL中指定特定用户只能访问指定的数据库呢?希望大家能帮助我,这太纠结了。
然后取消用户在postgres数据库中的所有权限:REVOKE ALL ON DATABASE postgres FROM user1;
执行这两步后,user1依然可以连接数据库postgres,而且还可以在其中建表,这是为什么呢?如何在PostgreSQL中指定特定用户只能访问指定的数据库呢?希望大家能帮助我,这太纠结了。
REVOKE [ GRANT OPTION FOR ]
{ { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
ON DATABASE dbname [, ...]
FROM { [ GROUP ] rolename | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]难道是我语句上的问题么?
1、应该删除公共权限,即PUBLIC的权限
2、只删除角色的权限是不够的,因为角色属于PUBLIC,PUBLIC还是有访问和创建的权限的,所以上面的语句是没有用的(并不是说没执行,只是目的没达到)
3、牢记PostgreSQL中的角色组权限和角色权限,其中有着继承关系