我有一位用户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
或其他用户)登录同一数据库?
谢谢
答案 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