postgreSQL的“信任”和“身份”的区别?

在postgreSQL的/var/lib/pgsql/data/pg_hba.conf trustident可以像这样设置为method

 # TYPE DATABASE USER CIDR-ADDRESS METHOD local all postgres trust host all postgres 127.0.0.1/32 trust 

我的印象是,两者的不同之处在于我trust我能做到

 psql postgres 

ident我不得不

 sudo -u postgres psql postgres 

但是,即使trust我也不能得到第一个指挥。

有人可以解释什么是trustident的区别?

“信任”是指“无论用户使用什么用户名,都不需要密码来validation用户”。

“标识”的意思是“接受任何作为用户名identd返回,而不要求密码来validation”。

有更多关于postgresql站点的不同身份validation方法的信息。

为了弄清楚为什么这个特定的连接失败,你需要检查postgresql日志。 这可能是因为你正在使用的用户名不存在于postgres数据库中,或者可能是其他问题 – 如果不先查看日志,就不可能分辨出来。

psql必须使用数据库的用户名连接到数据库。 如果未使用-U选项指定,则将OS用户名作为默认值。

所以实际上, psql dbname相当于psql -U $USER dbname

因此,如果以root身份login,并且尚未创build名为root的数据库用户,那么即使身份validation模式为trust ,通常也会产生以下错误。

#psql postgres
psql:致命:angular色“根”不存在

另一方面,如果像这样调用它,它仍然会工作,仍然以root身份login:

#psql -U postgres postgres

这是可以的,因为名为postgres的数据库和名为postgres的用户都存在,因为它们是在PostgreSQL安装期间自动创build的。