Postgresql:创建没有权限的新用户?

Postgresql:创建没有权限的新用户?,postgresql,roles,privileges,Postgresql,Roles,Privileges,我只是在学习PostgreSQL。每次我创建用户时,他们似乎都拥有在任何数据库中执行任何操作的全部权限: $sudo useradd fool#在系统中创建用户“fool” #在postgresql中,尽可能限制 $sudo-u postgres createuser傻瓜--没有超级用户--没有createdb--没有createrole--没有继承 $sudo-u愚弄psql postgres#但它仍然可以连接到“postgres”数据库 postgres=>drop table id;#并删

我只是在学习PostgreSQL。每次我创建用户时,他们似乎都拥有在任何数据库中执行任何操作的全部权限:

$sudo useradd fool#在系统中创建用户“fool”
#在postgresql中,尽可能限制
$sudo-u postgres createuser傻瓜--没有超级用户--没有createdb--没有createrole--没有继承
$sudo-u愚弄psql postgres#但它仍然可以连接到“postgres”数据库
postgres=>drop table id;#并删除表
升降台
我尝试通过而不是通过创建用户,但效果完全相同


如何创建一个只有访问自己数据库权限的用户?或者我必须在创建用户后明确撤销所有权限吗?”因为从安全角度来看,这有点糟糕-很容易意外忘记(或者只是不知道有必要)撤销新用户的权限。

所有角色都是伪角色
PUBLIC的“成员”。默认情况下,
PUBLIC
拥有许多特权。我的做法是从我需要的
PUBLIC
中撤销所有特权,并将各种组合授予特定角色。最近增加的一项功能有助于解决这一问题。另一个不是那么灵活但更简单的方法是特权。

所有角色都是伪角色
PUBLIC
的“成员”。默认情况下,
PUBLIC
拥有许多特权。我的做法是从我需要的
PUBLIC
中撤销所有特权,并将各种组合授予特定角色。最近增加的一项功能有助于解决这一问题。另一个不是那么灵活但更简单的方法是特权。实际上我刚刚发现了这个重复的问题(oops):@MilenA.Radev你知道有一篇文章可以指导我设置默认角色和权限,这样当我创建一个新用户时,该用户可以完全访问自己的数据库,但甚至不能连接到其他任何人的数据库吗?@MilenA.Radev作为answer@RobinWinslow您只需要从中撤消每个数据库上的连接公众和/或在DBs中删除
public
模式<代码>更改默认权限
可能对此有所帮助。这些默认授权的存在让人有点恼火,但如果没有,人们会抱怨更多——因为有很多人抱怨Pg“很难设置”。