0

我已经在 stackoverflow 上看到了关于类似主题的所有问题,但我想知道为什么会发生这种情况,问题出在哪里,以及如何正确设置它。我正在学习编码,所以对于任何误解,我深表歉意。请对我有耐心。

我的情况是——

我无法psql从终端运行命令。

回应是——

psql: FATAL:  role "some_name" does not exist

在我写下并按回车后 -

sudo -u postgres -i

一切正常,我可以运行psql命令。sudo -u postgres -i每次打开终端时,我都需要一次又一次地编写命令。

我想感谢任何回应。

如果您有更多问题,我可以为您提供更多信息。

在这里查看一些附加信息:

[postgres@localhost ~]$ psql
psql (9.6.6)
Type "help" for help.

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member
 of 
-----------+------------------------------------------------------------+-------
----
 matus     |                                                            | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

其他:

[postgres@localhost ~]$ whoami
postgres

所以,我有两个打开的终端,一个作为postgres,另一个作为user_name我可以做其他事情的地方,以某种方式使用 db。

4

1 回答 1

1

根据您的描述,我想您在 hba 文件中有对等身份验证。sudo -u postgres要检查它使用 psql (您的方法)连接到 db并且:

t=# show hba_file ;
      hba_file
---------------------
 /pg/d10/pg_hba.conf
(1 row)
t=# \! grep local /pg/d10/pg_hba.conf | grep -v "#"
local   all             all                                     peer

如果您看到高于信任的对等点,或者只是对等点,那就是这种情况。来自手册:

https://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-PEER

对等认证方法的工作原理是 从内核获取客户端的操作系统用户名,并将其用作允许的数据库用户名(带有可选的用户名映射)

格式化我的。

所以为了避免

psql:致命:角色“some_name”不存在

只需创建这样的数据库用户:

create user some_name;

或更改peertrusthba.conf

于 2018-01-10T08:36:58.500 回答