FATAL: 用户“ postgres”的密码验证失败(postgreql 11和 pgAdmin 4)

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

380324 次浏览

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

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

enter image description here

这将给出窗口底部(正式文件)的 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。(你可以忽略注释,以 # 开头的行)。

  • Restart the PostgreSQL service from the Services control panel (start->run->services.msc)

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

  • Run 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

注意: 在更改密码后(如上所述) ,请记住将方法更改回 md5或其他列出 给你的 auth 方法。

如果您正在使用 pgAdmin4并且在更新密码时遇到错误,请遵循以下步骤:

打开文件“ pg _ hba. conf”并查找“ IPv4本地连接”

2] See the value under "Method" column, it must be set to "md5" becase you selected it while installing.

3] Make "md5" value blank and save the file. Restart pgAdmin4 application.

现在再次将值设置回“ md5”并在 pgAdmin 应用程序中输入密码。

你应该能够成功地做到这一点。

我知道这是一个老问题,但我也遇到了同样的问题,例如,没有对话框来设置 Postgres 的密码在安装 Postgreql 11期间。

我没有完成其他答案中建议的所有文件操作,而是删除了 Postgreql 11并安装了 Postgreql 12,在安装过程中系统会提示我设置密码。

注意: CREATEUSER 与 CREATEROLE 相同,只是它暗示了 LOGIN。

$ psql postgres
postgres=# create user postgres with superuser password 'postgres';

对于 Windows 变体-我也经历了这个讨厌的错误,因为 pgAdmin 为我的 Windows x64安装版本9.2。这让我的生产陷入瘫痪。

在文件夹 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

并将方法 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

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

你们的数据库安全系统现在完全崩溃了!注意这个警告,在更改所有相关用户的用户密码到期时间为2099年后将其返回 md5。

  • 登录到 PgAdmin4

Go to

  • 对象 > 创建 > 登录/组角色
  • 创建在 psql 终端中命名的“用户名”
  • 创建密码
  • 给它所有的权利
  • 保存
  • 立即尝试在 psql 终端中输入密码。

这招对我很管用。

希望这对你有用。

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

您可以首次使用“超级用户”密码。

之后,您可以使用 Object > Create > Login/Group Role 来更改“ postgres”用户的密码。

如果在安装 this is 命令时已经输入了密码,请尝试使用 psql -U postgres。谢谢

目前我有一个头痛解决这个案件。一个朋友帮助我,我决定在这里张贴我的解决方案。

  1. 在任意文本编辑器 (可以在 postgres 安装文件夹 > data 中找到此文件)中打开 pg _ hba. conf;
  2. 更改所有方法字段以信任 (意味着 postgre 不需要密码);
  3. 在控制台中运行以下命令: “ alter user postgres with password’[ my password ]’;”| psql-U postgres (意思是为用户修改一些用户密码作为参数 -U postgres);
  4. Et voilà (不要忘记为了最适合你的方法而改变信任的方法).

我希望有一天这能帮到别人。

After successfully changing the master password

如果在遵循主密码重置步骤之后仍然得到相同的错误 打开命令提示符并执行

    psql -U postgres

它会询问您的密码,输入您现在设置的新密码并行打开 SQL shell (psql) ,然后再次尝试使用新密码

选项1: 如果使用 trust

最好在 pg _ hba 中仅将 postgres 更改为 trust。然后使用 postgres 超级用户访问 db,并使用 postgres 超级用户的能力添加其他用户和密码,然后将所有其他 peer更改为 md5

步骤: 在 pg _ hba. conf 中更改

  • local postgres呼叫 trust
  • 不要将 local all改为 trust,
  • 而是将 local allpeer改为 md5——这意味着一个正确的密码就足以登录。

See this solution in detail at 第二个答案是“获取错误: 当试图让 pgsql 与 ails 一起工作时,用户“ postgres”的对等身份验证失败”.


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

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

  1. 将任何本地用户从 peer更改为 md5,通常是:
  • local postgrespeer改为 md5
  • Change local all from peer to md5
  1. 加一个后期,用你的 Linux 的力量,只有:

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

参见 接受的答案和评论“获得错误: 对于用户“ postgres”,当试图让 pgsql 使用 Rail 时,对等身份验证失败”

我通过在文件“ pg _ hba”中将 peer 更改为 trust 来解决这个问题。然后我用以下命令重新启动 postgres 服务:

sudo service postgresql restart

就是这样。

我已经尝试了所有上述的解决方案,相信我没有任何工作!我已经通过使用以下命令解决了这个问题

  1. Psql-U 缺省值

  2. 密码

输入新密码:

再输入一次:

enter image description here

my username is : default

这对我来说很有效。

For Linux user try this

//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';

对于那些得到这个错误和这些答案都没有帮助的人,我可能没有 StackOverflow 鱼给你,但我会教你如何捕鱼!

在 pg _ hba 中可能没有正确的行顺序。Conf 文件。如果您阅读下面这个 PostgreSQL 文档链接,它说,如果“没有找到匹配的条目”,就会抛出这个错误。然而,这并不总是正确的!文档是由人类编写的,人类会犯错误。

Https://www.postgresql.org/docs/current/client-authentication-problems.html

事实上,更高一级的行可能具有优先权,是合格的,并强制您使用存储在 PostgreSQL 中的密码,而不是委托身份验证或其他方法。如果不指定存储在 PostgreSQL 中的密码,则不需要 LOGIN role 属性。在这个列表的最上面加一行,写上你的特定用户、身份验证协议、网络详细信息和其他条件。此外,许多人可能认为大多数计算机使用 IPv4。试试 IPv6,你会大吃一惊的。一旦您知道了问题的非常具体的标准,并在顶部放置了一行,那么您就已经建立了解决这些 pg _ hba 问题的唯一可靠方法。没有源代码调试的 conf 问题!

另一个有用的技巧是在 pg _ admin (用于 PostgreSQL 的 SQL IDE)中创建大量服务器条目,并使用所有用户和身份验证协议进行测试。当您测试不同的场景时,您将立即知道哪些场景会失败。

此外,无论何时更改此文件,都要在测试用户之前重新启动 PostgreSQL 服务。

不客气,我的朋友

窗口11-Postgres 14

  1. 打开 pgAdmin4-click 服务器
  2. 右键单击您的 windows 用户名规则,例如: MyUserName。
  3. 定义选项卡-输入密码,单击保存。
  4. 开启/重新开启终端机
  5. 运行: psql "postgres:///"

如果你得到“我的名字数据库不存在”,你可以去

我将要提到的这个特殊情况可能不会经常出现,但是我也得到了这个错误。在深入研究之后,我发现有一个本地 postgres 实例正在监听端口5433,而且我正在尝试建立一个 Kubernetes 隧道,将一个远程 PG 实例映射到本地端口5433。原来我运行的命令是试图连接到本地实例而不是远程实例。当我暂时停止本地实例时,我就能够通过隧道连接到远程实例,而无需更改我正在使用的 psql命令。