用户身份验证如何在Postgresql中工作

时间:2014-02-27 12:39:32

标签: postgresql

用户/角色在Postgresql中用于访问控制的准确程度如何?它们与在操作系统中提供访问控制的用户有何不同。

安装Postgresql时,我可以看到用户postgres是在/ etc / passwd中创建的。

我可以通过sudo使用psql并查看Postgres中的用户/角色。

$ sudo -u postgres psql
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}

这表示存在名为postgres的角色,但尝试使用它而不是使用sudo失败。

$ psql -U postgres
psql: FATAL:  Peer authentication failed for user "postgres"

为什么,/ etc / passwd中的postgres用户与\ du

打印的postgres角色之间的联系是什么?

1 个答案:

答案 0 :(得分:0)

“postgres”OS用户与“postgres”角色之间的联系是:

  1. 拼写相同
  2. 如果没有为psql指定-U选项,则默认使用操作系统用户名作为角色名称,如果是您的操作系统用户,则可能是“postgres”。
  3. 如果你在pg_hba.conf中指定了“peer”授权,你似乎已经完成了,那么你必须是那个os用户才能以该角色登录。如果您不想要该规则,请将其更改为其他内容,例如trust,md5等。