PostgreSQL用户权限

我试图从MySQL过渡到PostgreSQL,但发现用户帐户/权限系统是完全不同的。

使用mysql,所有账户都由mysql内部处理。 与postgres似乎我需要在系统内,以及在postgres内的帐户。

有什么系统用户帐户与postgres用户帐户相关的指南? postgres手册似乎没有详细说明这一点。

如果您想使用本地身份validation,则只需创build系统用户。

对于networking连接,您可以像使用MySQL一样使用CREATE USER和GRANT。

主要区别在于,与MySQL不同的是,authentication和授权部分全部在mysql数据库的表内,部分Postgresauthentication规则在外部文件pg_hba.conf中。

为了让用户foo从10.1.1.0/24连接到数据库栏,你需要在这个文件中这样的一行:

host bar foo 10.1.1.0/24 md5 

编辑pg_hba.conf之后,记得运行

 pg_ctl reload 

重新加载configuration。

当用户尝试连接时,他们将被要求提供密码(您在创build用户时提供的密码)。

另外请记住,在PostgreSQL中一切都是angular色。 您定义为“WITH LOGIN”的angular色是一个用户,而不具有此标志的angular色更像是一个组。 为了获得灵活性,我倾向于使用密码和WITH LOGIN来创build用户。 然后,我创build没有密码的angular色,并将此angular色授予login用户。 我的补助是针对团体angular色,而不是针对个人用户。

在pg_hba.conf中,使用+angular色来匹配angular色分配的任何人(而不是上面例子中的foo)

请注意,如果postgresql帐户被configuration为能够使用ident和md5,那么默认情况下它将尝试使用ident。

您可以强制使用用户名/密码(即md5),通过将选项–host = localhost添加到psql命令行或类似的结尾。

这强制连接通过套接字,这将禁用身份证,因此强制用户名/密码身份validation。