致命:用户“postgres”的密码身份验证失败(带有 pgAdmin 4 的 postgresql 11)

Mic*_*ley 50 postgresql pgadmin-4 postgresql-11

我最近安装了 Postgresql 11,在安装过程中,没有步骤为 Postgres 输入密码和用户名。现在在 pgAdmin 4 中,我想将数据库连接到服务器,它要求我输入密码,而我一开始没有输入密码。任何人都知道发生了什么。谢谢!

iLu*_*gix 31

PostgreSQL 的默认身份验证模式设置为ident

您可以通过访问您的 pgpass.conf pgAdmin -> Files -> open pgpass.conf

在此处输入图片说明

这将为您提供pgpass.conf窗口底部的路径(官方文档)。

知道位置后,您可以打开此文件并根据自己的喜好进行编辑。

如果这不起作用,您可以:

  • 找到您的pg_hba.conf,通常位于C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf

  • 如有必要,请为其设置权限,以便您可以对其进行修改。您的用户帐户可能无法执行此操作,直到您使用属性对话框中的安全选项卡通过使用管理员覆盖为自己赋予该权限。

  • 或者,在开始菜单中找到notepadnotepad++,右键单击,选择“以管理员身份运行”,然后使用该方式File->Open打开pg_hba.conf

  • 编辑它以将主机“127.0.0.1/32”上用户“postgres”的“host”行设置为“trust”。如果它不存在,您可以添加该行;只需host all postgres 127.0.0.1/32 trust在任何其他行之前插入。(您可以忽略注释,以# 开头的行)。

  • 从“服务”控制面板 ( start->run->services.msc)重新启动 PostgreSQL 服务

  • 使用psql或 pgAdmin4 或您喜欢的任何方式连接

  • ALTER USER postgres PASSWORD 'fooBarEatsBarFoodBareFoot'

  • 删除您添加到 pg_hba.conf 的行或将其改回

  • 再次重新启动 PostgreSQL 以使更改生效。

下面是一个例子中的pg_hba.conf文件(方法已被设置为信任):

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

# IPv6 local connections:
host    all             all             ::1/128                 trust
Run Code Online (Sandbox Code Playgroud)

注意:请记住在更改密码后将METHOD 改回md5此处列出的其他身份验证方法(如上所述)。

  • 我在 Linux Mint(Ubuntu 18.04 基础)上遇到了同样的问题。我已遵循这些说明,但它没有改变任何东西。如果我尝试使用 postgres 和我设置的密码创建新服务器,仍然会出现相同的错误。有任何想法吗? (5认同)

小智 28

我已经尝试了上述所有解决方案,相信我北向工作!我已经使用以下命令解决了该问题

  1. psql -U 默认值

  2. \密码

输入新密码:

再次输入:

在此输入图像描述

我的用户名是:默认

这对我来说非常有效。

  • 我仍然收到`psql:错误:连接到套接字“/var/run/postgresql/.s.PGSQL.5432”上的服务器失败:致命:用户“默认”的对等身份验证失败`错误消息 (2认同)

小智 27

对于 Windows 变体 - 我也遇到了这个讨厌的错误,因为我的 Windows x64 版本 9.2 安装的 pgAdmin。它使我的生产瘫痪。

在文件夹 C:\Program Files\PostgreSQL\9.2\data 或 C:\Program Files (x86)\PostgreSQL\9 中。x \data,您将找到 pg_hba.conf 文本文件。

找到以下几行:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
Run Code Online (Sandbox Code Playgroud)

并将 METHOD md5 更改为“信任”,如下所示:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
Run Code Online (Sandbox Code Playgroud)

从 Windows>Run 输入“services.msc”并enter找到正确的 PostgreSQL 实例并重新启动它。

您的数据库安全性现已全面开放!在将所有相关用户的用户密码到期时间更改为 2099 年后,注意警告将其返回到 md5。

  • md5有什么意义? (2认同)

MD *_*YON 20

对于 Linux 用户试试这个

//CHECK POSTGRES IS WORKING OR NOT
sudo systemctl status postgresql

//THIS WILL ACCEPT PORTS
sudo pg_isready
sudo su postgres

//NAVIGATE TO SQL TERMINAL / BASH
psql

//CREATE A NEW USER WITH PASSWORD
CREATE USER shayon WITH PASSWORD 'shayon';
Run Code Online (Sandbox Code Playgroud)


小智 19

修改主密码成功后

如果即使执行主密码重置步骤后仍出现相同的错误,请打开命令提示符并执行

    psql -U postgres
Run Code Online (Sandbox Code Playgroud)

它将询问您密码,输入您现在设置的新密码并行打开 SQL shell(psql) 并使用新密码重试


use*_*148 13

注意:CREATE USER 与 CREATE ROLE 相同,只是它隐含了 LOGIN。

$ psql postgres
postgres=# create user postgres with superuser password 'postgres';
Run Code Online (Sandbox Code Playgroud)


小智 13

如果在安装时输入了密码,请尝试使用psql -U postgres此命令,您必须使用该命令。谢谢 :)


Gau*_*til 9

更改默认使用的密码 ALTER USER postgres WITH PASSWORD 'new_password';

  • 当我们第一次安装时,我们需要为默认的“postgres”用户设置密码 (2认同)

que*_*o42 9

选项 1:如果您使用trust

trust最好只在 pg_hba.conf 中将postgres 更改为,然后使用 postgres 超级用户访问数据库,并使用 postgres 超级用户的权限添加其他用户和密码,然后将所有其他更改peermd5.

步骤: 在pg_hba.conf中,更改

  • local postgrestrust
  • 不要更改local alltrust,
  • local all相反,从更改peermd5- 这意味着正确的密码足以登录。

请参阅“获取错误:当尝试让 pgsql 使用 Rails 时,用户“postgres”的对等身份验证失败”的第二个答案详细了解此解决方案。


选项2:使用md5,不需要trust(推荐)

这种方法更简单,因为您只需要更改 pg_hba.conf 一次:

  1. 将任何本地用户从 更改为peermd5通常:
  • 更改local postgrespeermd5
  • 更改local allpeermd5
  1. 仅使用 Linux 密码添加 postgres 密码:

     sudo su postgres
     psql (or psql -p <port> if you have more than one PostgreSQL)
     \password
     \q
    
    Run Code Online (Sandbox Code Playgroud)

请参阅已接受的答案和“尝试让 pgsql 使用 Rails 时出现错误:用户“postgres”的对等身份验证失败”的评论


Eri*_*ker 5

我要提到的这种特殊情况可能不会经常出现,但我也遇到了这个错误。经过调查,这是因为我有一个本地 postgres 实例侦听端口 5433,并且我试图建立一个 Kubernetes 隧道到映射到本地端口 5433 的远程 PG 实例。事实证明,我正在运行的命令正在尝试连接到本地实例而不是远程实例。当我暂时停止本地实例时,我能够通过隧道连接到远程实例,而无需更改psql我正在使用的命令。