MAH*_*AHI 2 sql postgresql privileges createuser
PostgreSQL版本9.1,
我使用默认用户登录数据库:"postgres",我的数据库包含默认角色"public"
我拥有的数据库列表,
1.database1
2.database2
3.database3
现在,我需要创建一个用户"newuser",它只具有"database2"的权限,它不应该登录到其他数据库.
我尝试使用这种语法
create role newuser with login nosuperuser nocreatedb nocreaterole noinherit password 'newpassword';
revoke all privileges on database database1, database3 from newuser;
Run Code Online (Sandbox Code Playgroud)
但仍然"newuser"可以登录到其他数据库(database1/database3),它可以从其他模式中选择表.(未列出公共模式中的表)
请任何人向我解释创建用户并为其授予权限的正确程序.
我需要一个只能拥有特定数据库所有权限的用户,他不应该登录到其他数据库:)
默认情况下,所有public模式都可用于普通(非超级用户)用户。为了防止这种情况,请以超级用户身份登录并发出命令:
REVOKE ALL ON DATABASE somedatabase FROM PUBLIC;
Run Code Online (Sandbox Code Playgroud)
这将撤销所有用户对给定数据库的所有权限。
好吧,我总是通过 来做到这一点pg_hba.conf,尽管我怀疑它也应该可以按照您尝试的方式实现。
人们期望撤销所有特权以拒绝与所列实体进行任何活动。所以没有联系,更不用说实际选择了。我们可能在这里忘记了一些明显的事情。
无论如何,使用配置文件应该很容易解决这个问题。添加newuser并仅列出您想要允许的数据库。它将有效地拒绝该用户与任何其他数据库的任何连接。显然,除了您已有的权限设置之外,还可以使用它。