如何使 psql 默认为 localhost?

saj*_*i89 11 postgresql 12.04

我有以下场景:

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=# 
Run Code Online (Sandbox Code Playgroud)

我正在尝试以postgresqluser身份登录到我系统中安装的服务器postgres。仅当我指定-h localhost. 而psql文档说:

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

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

为什么我无法在不指定主机的情况下登录,是否有一些配置文件需要根据psql文档中的说明进行更改才能发生?

小智 16

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

export PGHOST="db"
Run Code Online (Sandbox Code Playgroud)

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


Dan*_*ité 7

事实上,它的工作原理是记录在案的。

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

问题中的错误信息:

psql: FATAL:  Ident authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

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

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

$ sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)