在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 i和root一样。
psql postgres对于ident,我不得不
sudo -u postgres psql postgres但是,即使使用trust,我也无法获得第一个命令。
有人能解释一下trust和ident的区别吗?
发布于 2013-06-12 14:51:22
“信任”的意思是“无论客户端使用什么用户名,您都不需要询问密码来验证用户”。
“identd”的意思是“接受identd返回的任何用户名,而不要求密码进行验证”。
在postgresql站点上有关于不同身份验证方法的更多信息。
为了找出此特定连接失败的原因,您需要检查postgresql日志。可能是您使用的用户名在postgres数据库中不存在,或者可能是其他问题--如果不首先查看日志是不可能知道的。
发布于 2013-06-12 18:26:54
psql必须用数据库的用户名连接到数据库。当没有用-U选项指定它时,它将OS用户名作为默认值。
所以实际上,psql dbname等同于psql -U $USER dbname
因此,当您被记录为root而没有创建名为root的数据库用户时,这通常会产生以下错误,即使身份验证模式是trust。
psql postgres psql:致命:角色"root“不存在
另一方面,如果像这样调用,仍然作为root记录的话,它就可以工作:
psql -U postgres postgres
这是可以的,因为名为postgres的数据库和名为postgres的用户都存在,因为它们是在PostgreSQL安装期间自动创建的。
https://serverfault.com/questions/515277
复制相似问题