Postgres:尝试使用不同的unix用户登录时身份验证失败

时间:2011-12-07 18:47:50

标签: postgresql login

我有一位用户hduser和一位用户postgres

hduser

hduser@master:/$ psql -Upostgres -W analytics
Password for user postgres: 
psql: FATAL:  Ident authentication failed for user "postgres"
hduser@master:/$ 

postgres

postgres@master:/opt/pentaho/biserver-ce$ psql -Upostgres -W analytics
Password for user postgres: 
psql (8.4.9)
Type "help" for help.

analytics=# 

如何使用其他用户(如hduser或其他用户)登录同一数据库?

谢谢

4 个答案:

答案 0 :(得分:18)

PostgreSQL的默认配置只允许对数据库用户进行“本地”访问,这些用户与OS用户同名。 “local”表示仅使用Unix-Domain套接字而没有任何IP流量。请参阅配置文件pg_hba.conf的文档,尤其是以“local”开头的行和身份验证方法“peer”或“ident”。

另一方面,默认情况下,使用IP传输通道访问postgres,如果有密码,则使用密码。因此,这应该可以帮助普通用户。

foouser@host$ psql -U baruser -h 127.0.0.1 database

坏消息是,DB超级用户postgres默认没有密码,因此您必须先设置密码。

答案 1 :(得分:1)

Postgres分别处理身份验证和授权。

在文件中配置了身份验证选项:pg_hba.conf - 此文件描述了允许用户使用的身份验证方法以及可以连接的主机。

通过在SQL中发出GRANT语句来配置访问数据库和表的授权。

在大多数Linux系统上,Postgres用户设置为使用'ident'身份验证,默认情况下没有密码,因此如果您希望使用密码登录,则需要使用SQL语句进行配置,然后更改您的pg_hba.conf以允许用户postgres使用密码登录:

ALTER ROLE postgres WITH PASSWORD password

答案 2 :(得分:0)

您可以为hduser设置.pgpass文件

答案 3 :(得分:-3)

我在pg_hba.conf中添加了以下内容并修复了

local   all         all                         trust