在postgreSQL的/var/lib/pgsql/data/pg_hba.conf
trust
和ident
可以像这样设置为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
我也不能得到第一个指挥。
题
有人可以解释什么是trust
和ident
的区别?
“信任”是指“无论用户使用什么用户名,都不需要密码来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的。