致命:用户 "postgres" 的密码验证失败(带有 pgAdmin 4 的 postgresql 11)
FATAL: password authentication failed for user "postgres" (postgresql 11 with pgAdmin 4)
我最近安装了 Postgresql 11,在安装过程中,没有为 Postgres 输入密码和用户名的步骤。现在在 pgAdmin 4 中,我想将数据库连接到服务器,它要求我输入密码,而我一开始没有输入任何密码。
任何人都知道发生了什么。谢谢!
PostgreSQL 的默认身份验证模式设置为 ident。
您可以通过 pgAdmin -> Files -> open pgpass.conf
访问您的 pgpass.conf
这将为您提供 window (official documentation) 底部的 pgpass.conf
路径。
知道位置后,您可以打开此文件并根据自己的喜好进行编辑。
如果还是不行,你可以:
找到你的pg_hba.conf
,通常位于C:\Program Files\PostgreSQL.1\data\pg_hba.conf
下
如有必要,请对其设置权限,以便您可以对其进行修改。您的用户帐户可能无法执行此操作,直到您使用属性对话框中的安全选项卡通过使用管理员覆盖为自己授予该权限。
或者,在您的开始菜单中找到 notepad
或 notepad++
,右键单击,选择 "运行 作为管理员",然后使用 File->Open
以这种方式打开 pg_hba.conf
。
编辑它以将主机“127.0.0.1/32”上用户“postgres”的“主机”行设置为“信任”。如果不存在,您可以添加该行;只需在任何其他行之前插入 host all postgres 127.0.0.1/32 trust
。 (您可以忽略注释,以#开头的行)。
从服务控制面板重新启动 PostgreSQL 服务 (start->run->services.msc
)
使用 psql
或 pgAdmin4 或您喜欢的任何方式连接
运行 ALTER USER postgres PASSWORD 'fooBarEatsBarFoodBareFoot'
删除您添加到 pg_hba.conf 的行或将其改回
再次重新启动 PostgreSQL 以使更改生效。
这是pg_hba.conf
文件的示例(METHOD已设置为trust):
# 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
或 here 列出的其他身份验证方法(如上所述)。
如果您使用的是 pgAdmin4 并且在更新密码时遇到错误,请按照以下步骤操作:
1] 打开文件 "pg_hba.conf" 并找到 "IPv4 local connections"
2] 查看 "Method" 列下的值,它必须设置为 "md5" 因为你在安装时选择了它。
3] 将 "md5" 值设为空白并保存文件。重新启动 pgAdmin4 应用程序。
4] 现在再次将值设置回 "md5" 并在 pgAdmin 应用程序中输入您的密码。
你应该可以成功完成。
我知道这是一个老问题,但我遇到了同样的问题,例如在使用 Postgresql 11 安装期间没有设置 Postgres 密码的对话框。
我没有执行其他答案中建议的所有文件操作,而是删除了 Postgresql 11 并安装了 Postgresql 12,在安装过程中提示我设置密码。
注意:CREATE USER 与 CREATE ROLE 相同,只是它暗示了 LOGIN。
$ psql postgres
postgres=# create user postgres with superuser password 'postgres';
对于 Windows 变体 - 由于我的 Windows x64 安装版本 9.2 的 pgAdmin,我也遇到了这个讨厌的错误。它让我的生产瘫痪了。
在文件夹 C:\Program Files\PostgreSQL.2\data 或 C:\Program Files (x86)\PostgreSQL.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
并将 METHOD md5 更改为 "trust",如下所示:
# 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>运行 键入 "services.msc" 并 输入 找到正确的 PostgreSQL 实例并重新启动它。
您的数据库安全性现已大开!注意警告 return 在将所有相关用户的用户密码到期时间更改为 2099 年后将其返回 md5。
- 登录到 PgAdmin4
转到
- 对象 > 创建 > Login/Group 角色
- 创建在 psql 终端中命名的“用户名”
- 创建密码
- 赋予它所有权利
- 保存
- 立即在 psql 终端中尝试输入密码。
对我有用。
希望这对你有用。
更改默认使用的密码
ALTER USER postgres WITH PASSWORD 'new_password';
第一次可以使用“超级用户”密码。
之后您可以使用对象 > 创建 > Login/Group 角色来更改“postgres”用户的密码。
如果在安装时输入了密码,请尝试使用 psql -U postgres
这是您必须使用它的命令。谢谢:)
我最近很头疼解决这个案子。一位朋友帮助我,我决定 post 我的解决方案在这里。
- 在任何文本编辑器中打开 pg_hba.conf(您可以在 postgres 安装文件夹 > 数据中找到此文件);
- 将所有方法字段更改为信任 (这意味着您不需要 postgre 的密码);
- 运行 在您的控制台中执行此命令:“使用密码‘[我的密码]’更改用户 postgres;” | psql -U postgres (意思是为用户修改[我的密码]的一些用户密码作为参数-U postgres);
- Et voilà (不要忘记将信任的方法改回最适合您的方法)。
我希望有一天这对某人有所帮助。
修改主密码成功后
如果您在执行了主密码重置步骤后仍出现相同的错误
打开命令提示符并执行
psql -U postgres
它会要求你输入密码,输入你现在设置的新密码并行打开SQL shell(psql) 然后用新密码重试
选项 1:如果您使用 trust
最好只在 pg_hba.conf 中将 postgres 更改为 trust
,然后使用 postgres 超级用户访问您的数据库,并使用 postgres 超级用户的权限添加其他用户和密码,然后更改所有其他peer
到 md5
.
步骤:在pg_hba.conf中,更改
local postgres
到 trust
- 不要将
local all
更改为 trust
,
- 而是将
local all
从 peer
更改为 md5
- 这意味着正确的密码足以登录。
在 the second answer of 'Getting error: Peer authentication failed for user "postgres", when trying to get pgsql working with rails' 中查看此解决方案的详细信息。
选项 2:使用 md5
,不需要 trust
(推荐)
这种方法更简单,因为您只需要更改 pg_hba.conf 一次:
- 将任何本地用户从
peer
更改为 md5
,通常:
- 将
local postgres
从 peer
更改为 md5
- 将
local all
从 peer
更改为 md5
添加一个仅具有 Linux pw 功能的 postgres pw:
sudo su postgres
psql (or psql -p <port> if you have more than one PostgreSQL)
\password
\q
参见 the accepted answer and the comments of "Getting error: Peer authentication failed for user "postgres", when trying to get pgsql working with rails"。
我通过将本地 postgres 上的文件“pg_hba.conf”中的对等点更改为信任来解决了这个问题,然后我使用以下命令重新启动了 postgres 服务:
sudo service postgresql restart
就是这样。
我已经尝试了上面提到的所有解决方案,相信我北移成功了!我已经使用以下命令解决了这个问题
psql -U default
\密码
输入新密码:
再次输入:
我的用户名是:default
这对我来说非常有效。
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';
对于那些遇到此错误并且 NONE 这些答案有所帮助的人,我可能没有适合你的 Whosebug 钓鱼,但我会教你如何钓鱼!
您在 pg_hba.conf 文件中的行顺序可能不正确。如果您阅读下面的 PostgreSQL 文档 link,它说如果“没有找到匹配的条目”,则会抛出此错误。然而,这并不总是正确的!文档是人写的,人也会犯错。
https://www.postgresql.org/docs/current/client-authentication-problems.html
事实是,更靠前的一行可能优先,符合条件并强制您使用存储在 PostgreSQL 中的密码,而不是委托身份验证或其他方法。如果您没有指定存储在 PostgreSQL 中的密码,那么您不需要 LOGIN 角色属性。在此列表的最顶部放一行,其中包含您的特定用户、身份验证协议、网络详细信息和其他标准。此外,许多人可能认为大多数计算机都使用 IPv4。尝试 IPv6,您会感到惊讶。一旦您知道了您的问题的非常具体的标准并在顶部放置一行,那么您就建立了无需源代码调试即可解决这些 pg_hba.conf 问题的唯一可靠方法!
另一个有用的技巧是在 pg_admin(SQL IDE for PostgreSQL)中创建大量服务器条目,其中包含您的所有用户和身份验证协议测试。当您测试不同的场景时,您会立即知道哪些失败了。
此外,无论何时更改此文件,请在测试用户之前重新启动 PostgreSQL 服务。
不客气,我的朋友。 :)
windown 11 - postgres 14
- 打开 pgAdmin4 - 单击服务器
- right-click 在您的 windows 用户名规则上,例如:MyUserName。
- 定义选项卡 - 输入密码,点击保存。
- open/re-open 航站楼
- 运行:
psql "postgres:///"
如果你得到“MyName 数据库不存在”,你就可以开始了
我要提到的这种特殊情况可能不会经常出现,但我也遇到了这个错误。在查看之后,这是因为我有一个本地 postgres 实例在端口 5433 上侦听,并且我正在尝试设置一个 Kubernetes 隧道到映射到本地端口 5433 的远程 PG 实例。事实证明我是 运行 的命令试图连接到本地实例而不是远程实例。当我暂时停止本地实例时,我能够通过隧道连接到远程实例,而无需更改我正在使用的 psql
命令。
我最近安装了 Postgresql 11,在安装过程中,没有为 Postgres 输入密码和用户名的步骤。现在在 pgAdmin 4 中,我想将数据库连接到服务器,它要求我输入密码,而我一开始没有输入任何密码。 任何人都知道发生了什么。谢谢!
PostgreSQL 的默认身份验证模式设置为 ident。
您可以通过 pgAdmin -> Files -> open pgpass.conf
这将为您提供 window (official documentation) 底部的 pgpass.conf
路径。
知道位置后,您可以打开此文件并根据自己的喜好进行编辑。
如果还是不行,你可以:
找到你的
下pg_hba.conf
,通常位于C:\Program Files\PostgreSQL.1\data\pg_hba.conf
如有必要,请对其设置权限,以便您可以对其进行修改。您的用户帐户可能无法执行此操作,直到您使用属性对话框中的安全选项卡通过使用管理员覆盖为自己授予该权限。
或者,在您的开始菜单中找到
notepad
或notepad++
,右键单击,选择 "运行 作为管理员",然后使用File->Open
以这种方式打开pg_hba.conf
。编辑它以将主机“127.0.0.1/32”上用户“postgres”的“主机”行设置为“信任”。如果不存在,您可以添加该行;只需在任何其他行之前插入
host all postgres 127.0.0.1/32 trust
。 (您可以忽略注释,以#开头的行)。从服务控制面板重新启动 PostgreSQL 服务 (
start->run->services.msc
)使用
psql
或 pgAdmin4 或您喜欢的任何方式连接运行
ALTER USER postgres PASSWORD 'fooBarEatsBarFoodBareFoot'
删除您添加到 pg_hba.conf 的行或将其改回
再次重新启动 PostgreSQL 以使更改生效。
这是pg_hba.conf
文件的示例(METHOD已设置为trust):
# 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
或 here 列出的其他身份验证方法(如上所述)。
如果您使用的是 pgAdmin4 并且在更新密码时遇到错误,请按照以下步骤操作:
1] 打开文件 "pg_hba.conf" 并找到 "IPv4 local connections"
2] 查看 "Method" 列下的值,它必须设置为 "md5" 因为你在安装时选择了它。
3] 将 "md5" 值设为空白并保存文件。重新启动 pgAdmin4 应用程序。
4] 现在再次将值设置回 "md5" 并在 pgAdmin 应用程序中输入您的密码。
你应该可以成功完成。
我知道这是一个老问题,但我遇到了同样的问题,例如在使用 Postgresql 11 安装期间没有设置 Postgres 密码的对话框。
我没有执行其他答案中建议的所有文件操作,而是删除了 Postgresql 11 并安装了 Postgresql 12,在安装过程中提示我设置密码。
注意:CREATE USER 与 CREATE ROLE 相同,只是它暗示了 LOGIN。
$ psql postgres
postgres=# create user postgres with superuser password 'postgres';
对于 Windows 变体 - 由于我的 Windows x64 安装版本 9.2 的 pgAdmin,我也遇到了这个讨厌的错误。它让我的生产瘫痪了。
在文件夹 C:\Program Files\PostgreSQL.2\data 或 C:\Program Files (x86)\PostgreSQL.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
并将 METHOD md5 更改为 "trust",如下所示:
# 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>运行 键入 "services.msc" 并 输入 找到正确的 PostgreSQL 实例并重新启动它。
您的数据库安全性现已大开!注意警告 return 在将所有相关用户的用户密码到期时间更改为 2099 年后将其返回 md5。
- 登录到 PgAdmin4
转到
- 对象 > 创建 > Login/Group 角色
- 创建在 psql 终端中命名的“用户名”
- 创建密码
- 赋予它所有权利
- 保存
- 立即在 psql 终端中尝试输入密码。
对我有用。
希望这对你有用。
更改默认使用的密码
ALTER USER postgres WITH PASSWORD 'new_password';
第一次可以使用“超级用户”密码。
之后您可以使用对象 > 创建 > Login/Group 角色来更改“postgres”用户的密码。
如果在安装时输入了密码,请尝试使用 psql -U postgres
这是您必须使用它的命令。谢谢:)
我最近很头疼解决这个案子。一位朋友帮助我,我决定 post 我的解决方案在这里。
- 在任何文本编辑器中打开 pg_hba.conf(您可以在 postgres 安装文件夹 > 数据中找到此文件);
- 将所有方法字段更改为信任 (这意味着您不需要 postgre 的密码);
- 运行 在您的控制台中执行此命令:“使用密码‘[我的密码]’更改用户 postgres;” | psql -U postgres (意思是为用户修改[我的密码]的一些用户密码作为参数-U postgres);
- Et voilà (不要忘记将信任的方法改回最适合您的方法)。
我希望有一天这对某人有所帮助。
修改主密码成功后
如果您在执行了主密码重置步骤后仍出现相同的错误 打开命令提示符并执行
psql -U postgres
它会要求你输入密码,输入你现在设置的新密码并行打开SQL shell(psql) 然后用新密码重试
选项 1:如果您使用 trust
最好只在 pg_hba.conf 中将 postgres 更改为 trust
,然后使用 postgres 超级用户访问您的数据库,并使用 postgres 超级用户的权限添加其他用户和密码,然后更改所有其他peer
到 md5
.
步骤:在pg_hba.conf中,更改
local postgres
到trust
- 不要将
local all
更改为trust
, - 而是将
local all
从peer
更改为md5
- 这意味着正确的密码足以登录。
在 the second answer of 'Getting error: Peer authentication failed for user "postgres", when trying to get pgsql working with rails' 中查看此解决方案的详细信息。
选项 2:使用 md5
,不需要 trust
(推荐)
这种方法更简单,因为您只需要更改 pg_hba.conf 一次:
- 将任何本地用户从
peer
更改为md5
,通常:
- 将
local postgres
从peer
更改为md5
- 将
local all
从peer
更改为md5
添加一个仅具有 Linux pw 功能的 postgres pw:
sudo su postgres psql (or psql -p <port> if you have more than one PostgreSQL) \password \q
参见 the accepted answer and the comments of "Getting error: Peer authentication failed for user "postgres", when trying to get pgsql working with rails"。
我通过将本地 postgres 上的文件“pg_hba.conf”中的对等点更改为信任来解决了这个问题,然后我使用以下命令重新启动了 postgres 服务:
sudo service postgresql restart
就是这样。
我已经尝试了上面提到的所有解决方案,相信我北移成功了!我已经使用以下命令解决了这个问题
psql -U default
\密码
输入新密码:
再次输入:
我的用户名是:default
这对我来说非常有效。
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';
对于那些遇到此错误并且 NONE 这些答案有所帮助的人,我可能没有适合你的 Whosebug 钓鱼,但我会教你如何钓鱼!
您在 pg_hba.conf 文件中的行顺序可能不正确。如果您阅读下面的 PostgreSQL 文档 link,它说如果“没有找到匹配的条目”,则会抛出此错误。然而,这并不总是正确的!文档是人写的,人也会犯错。
https://www.postgresql.org/docs/current/client-authentication-problems.html
事实是,更靠前的一行可能优先,符合条件并强制您使用存储在 PostgreSQL 中的密码,而不是委托身份验证或其他方法。如果您没有指定存储在 PostgreSQL 中的密码,那么您不需要 LOGIN 角色属性。在此列表的最顶部放一行,其中包含您的特定用户、身份验证协议、网络详细信息和其他标准。此外,许多人可能认为大多数计算机都使用 IPv4。尝试 IPv6,您会感到惊讶。一旦您知道了您的问题的非常具体的标准并在顶部放置一行,那么您就建立了无需源代码调试即可解决这些 pg_hba.conf 问题的唯一可靠方法!
另一个有用的技巧是在 pg_admin(SQL IDE for PostgreSQL)中创建大量服务器条目,其中包含您的所有用户和身份验证协议测试。当您测试不同的场景时,您会立即知道哪些失败了。
此外,无论何时更改此文件,请在测试用户之前重新启动 PostgreSQL 服务。
不客气,我的朋友。 :)
windown 11 - postgres 14
- 打开 pgAdmin4 - 单击服务器
- right-click 在您的 windows 用户名规则上,例如:MyUserName。
- 定义选项卡 - 输入密码,点击保存。
- open/re-open 航站楼
- 运行:
psql "postgres:///"
如果你得到“MyName 数据库不存在”,你就可以开始了
我要提到的这种特殊情况可能不会经常出现,但我也遇到了这个错误。在查看之后,这是因为我有一个本地 postgres 实例在端口 5433 上侦听,并且我正在尝试设置一个 Kubernetes 隧道到映射到本地端口 5433 的远程 PG 实例。事实证明我是 运行 的命令试图连接到本地实例而不是远程实例。当我暂时停止本地实例时,我能够通过隧道连接到远程实例,而无需更改我正在使用的 psql
命令。