我正在尝试使用postgres角色运行psql命令。
(1)sudo psql -U postgres
由于postgres与我的操作系统用户名不同,因此在运行它时收到Peer authentication failed for user“postgres”错误。
(2)但是当我运行sudo -u postgres psql
时,它成功了
My terminal image
我不确定(2)命令是如何工作的,因为根据Postgres文档,对等认证在本地自动发生,并且我当前的操作系统用户名与postgres不同(我没有对pg_hba.config或pg_ident.config文件进行任何更改)。
命令(1)和(2)之间有什么区别?
1条答案
按热度按时间zte4gxcn1#
在第一次尝试中,您使用
sudo
成为root
用户(因为没有-u
选项),并尝试以数据库用户postgres
的身份进行连接,但由于root
与postgres
不同,因此peer
身份验证失败。在第二次尝试中,您使用
sudo
成为用户postgres
,并在未指定用户名的情况下调用psql
,因此用户名默认为当前操作系统用户名,即postgres
。