我有以下场景:
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)
我正在尝试以postgresql
user身份登录到我系统中安装的服务器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
事实上,它的工作原理是记录在案的。
当主机名被省略时,psql
连接到编译路径的 Unix 域套接字。这部分在你的情况下工作,否则它会输出与问题显示不同的错误消息。
问题中的错误信息:
Run Code Online (Sandbox Code Playgroud)psql: FATAL: Ident authentication failed for user "postgres"
与以下事实有关:当使用 Unix 域套接字时,只有 Unix 用户 postgres 有权以数据库用户 postgres 的身份进行连接。这是在pg_hba.conf
文件中配置的。
当您以普通用户身份登录但您是系统管理员时,通常在 Ubuntu 中应该执行的操作:
$ sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16632 次 |
最近记录: |