为什么不“psql -U”为我工作?

我只是从Postgres开始。

这是Ubuntu 14.04 LTS上的Postgres 9.5的全新安装。 我使用apt回购: http : //www.postgresql.org/download/linux/ubuntu/

介绍页面http://www.postgresql.org/docs/9.5/static/tutorial-createdb.html说“-U”应该工作。 它不:

chris@blue:~$ psql -U postgres psql: FATAL: Peer authentication failed for user "postgres" 

然而,如果我“追求”后果,一切都很好:

 chris@blue:~$ sudo su - postgres postgres@blue:~$ psql psql (9.5.2) Type "help" for help. postgres=# 

我误解了什么?

psql -U 试图正常工作。 但是,postgresql试图validation你的方式是失败的。

当你sudo到postgres时,psql命令从你的sudo'ed shell获取你的身份。 如果没有“-U”,它会尝试使用用户标识并在angular色列表中查找。 它说'嗨,客户端运行在用户名postgres! 我们可以信任它!

在这两种情况下,都是控制事物的pg_hba.conf文件。 它告诉postgresql相信一个名为“postgres”的本地用户。 但是,否则,它使用“同行”authentication。

使用“peer”身份validation,它希望看到一个数据库用户(“angular色”)与您的名字,然后它将authentication你作为该用户(只!)。

本教程仅适用于从源代码安装PostgreSQL。 在你的Ubuntu安装中,访问控制已经被设置,所以不是所有的东西都可以login(因此“authentication失败”)。 要学习本教程,请尝试login到postgres用户( sudo -u postgres -i ),然后按照教程中的步骤操作。