如何使 psql 默认为 localhost?

如何使 psql 默认为 localhost?

我有以下情况:

saji@geeklap:~$ psql -U postgres
psql: FATAL:  Ident authentication failed for user "postgres"

saji@geeklap:~$ psql -h localhost -U postgres
Password for user postgres: 
psql (8.4.14)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=# 

我尝试以postgresql用户身份登录系统中安装的服务器postgres。只有指定后我才能登录-h localhost。而psql文档说:

如果省略主机名,psql 将通过 Unix 域套接字连接到本地主机上的服务器,或者通过 TCP/IP 连接到没有 Unix 域套接字的机器上的本地主机。

参考: http://www.postgresql.org/docs/current/static/app-psql.html#R2-APP-PSQL-CON

为什么如果不指定主机我就无法登录,是否有某些配置文件需要进行更改才能按照psql文档中所述进行操作?

答案1

如果你不喜欢默认通过 unix 套接字连接,你可以设置环境变量PGHOST。我有

export PGHOST="db"

在我的 中~/.bashrc,连接到具有该名称的服务器。还有一些方便的环境变量记录在http://www.postgresql.org/docs/9.5/static/libpq-envars.html

答案2

事实上,它确实按照文档所述运行。

当省略主机名时,psql连接到编译路径的 Unix 域套接字。该部分在您的情况下有效,否则它将输出与问题显示的不同的错误消息。

问题中的错误信息:

psql: FATAL:  Ident authentication failed for user "postgres"

与以下事实有关:在使用 Unix 域套接字时,只有 Unix 用户 postgres 才有权以数据库用户 postgres 的身份进行连接。这是在文件中配置的pg_hba.conf

当您以普通用户身份登录但作为系统管理员时,您通常应该在 Ubuntu 中执行以下操作:

$ sudo -u postgres psql

相关内容