pgadmin 给我错误:没有提供密码

Posted

技术标签:

【中文标题】pgadmin 给我错误:没有提供密码【英文标题】:pgadmin gives me the error: no password supplied 【发布时间】:2012-12-11 17:24:52 【问题描述】:

我已经在 linux (kubuntu) 上安装了 postgresql 9.2 和 pgadmin3 的最新版本,但是当我连接它们时出现这个错误:

发生错误: 连接服务器时出错:fe_sendauth:未提供密码

我能做什么?

我还在 java 中为我的 Web 应用程序配置了 tomcat。事实上,在尝试我的应用程序之前,postgresql 已经在工作了。

【问题讨论】:

我的密码是空的,所以我是在有请求的时候才输入的。 您可以尝试从命令行连接吗? $ psql -U <username> -h <hostname> <dbname> 如果您想使用 unix 域套接字连接,可以省略 -h @Eelke 谢谢你的帮助,我解决了改变 pg_hba.conf 的问题 【参考方案1】:

更改角色 postgres 的密码:

sudo -u postgres psql postgres

alter user postgres with password 'postgres';

尝试使用“postgres”作为用户名和密码进行连接。

参考:How to change PostgreSQL user password

【讨论】:

非常感谢@Paschal【参考方案2】:

是否需要密码取决于您在pg_hba.conf 中的设置。您可以使用不同的方式进行连接 - pg_hba.conf 中的不同设置可能适用。

我引用了 pgAdmin 3 附带的帮助,用于连接(“服务器”)设置中的“主机”字段:

主机是要联系的机器的 IP 地址,或者完全 合格的域名。在基于 Unix 的系统上,地址字段可能是 留空以使用默认的 PostgreSQL Unix 域套接字 本地机器,或设置为包含 PostgreSQL 的备用路径 插座。如果输入路径,则必须以“/”开头。港口 也可以指定编号。

如果您通过 Unix 套接字连接,则适用“本地”规则。 而通过 TCP/IP 连接时,“host”(或“hostssl”)规则适用。

如果您的 pg_hba.conf 文件顶部有这样一行:

local    all     all     peer

或:

local    all     all     ident

.. 如果您的系统用户是“postgres”并且您的数据库用户也是“postgres”,那么您可以在本地连接而无需密码。

【讨论】:

我改变了 # "local" 仅用于 Unix 域套接字连接 local all all peer # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 本地连接: 托管所有所有 ::1/128 信任 并且有效!谢谢!! @DarkCoffee:我认为您知道trust 设置不安全。 这对于version3可能是正确的,但是在pgAdmin 4上,主机名/地址字段不能留空;它会产生错误。【参考方案3】:

我意识到这是多年前的问题,但我今天遇到了同样的问题,并且有一个解决方案以有限但有用的方式使用 trust

在许多开发商店中,当开发人员需要 QA postgres 密码时,他们只是大喊大叫、发消息、发电子邮件、写在额头上等等。我想,“这真的很糟糕。我需要想办法在这里使用 PKI。”我们也使用 pgAdmin3。

首先,在您的 pg_hba.conf 中添加这样的一行,其中dev 代表您商店中开发人员的用户:

host all dev 127.0.0.1/32 trust

将开发人员的公钥放入数据库服务器上的authorized_keys 文件夹中。现在让他们使用类似于以下的命令使用-L 标志 ssh 进入服务器:

ssh -i ~/.ssh/id_rsa -L5432:127.0.0.1:5432 -vvv 101.102.103.104

这允许人们像使用本地主机一样使用 postgres 端口。当然,更换密钥,服务器并确保映射到本地开放端口(如果您有本地 postgres 运行,它可能绑定到 5432)。我使用了一个非常详细的标志,因此我可以轻松解决任何 ssh 问题。

打开另一个终端并发出以下命令:

psql -h 127.0.0.1 -U dev -p 5432

您应该可以访问数据库,并且永远不会提示您输入密码,我认为这很好,因为否则,开发人员将放弃密码而几乎不考虑安全性,就像万圣节糖果一样传递出去。

截至目前,PgAdmin3 仍会提示您输入密码,即使 - 就像白天一样 - 您不需要它。但其他 postgres GUI 不会。试试 Postico。它处于测试阶段,但效果很好。

我希望这个答案能帮助像我这样宁愿使用 PKI 进行 postgres 身份验证而不是随意共享密码的人。

【讨论】:

日志文件为我提供了 pg_hba.conf 中的规则按顺序处理的附加信息。我不得不将我的规则移到更广泛的规则之上,这样它才会产生影响。谢谢!【参考方案4】:

最近遇到这个问题。

如果您在本地机器上使用 PostgreSQL,并且 psql 无需记录即可正常工作,请尝试 pgadmin3 的菜单 File - Add Server - Properties tab,为此连接填写 Name 字段,将 Host 字段和 Password 字段留空,并点击ok

来自pgadmin docs

在基于 Unix 的系统上,地址字段可以留空以使用 本地机器上的默认 PostgreSQL Unix 域套接字,或者被设置 到包含 PostgreSQL 套接字的备用路径。如果路径是 输入时,必须以“/”开头。

从事 Debian 测试(pgadmin3 1.22,PostgreSQL 11),没有接触过pg_hba.conf

【讨论】:

【参考方案5】:

对我来说,我运行pg_ctl -D /usr/local/var/postgres start,启动服务器,然后一切正常,它会弹出连接主机端口。

【讨论】:

以上是关于pgadmin 给我错误:没有提供密码的主要内容,如果未能解决你的问题,请参考以下文章

在 PgAdmin 中取回服务器提示错误“致命:用户“postgres”的密码验证失败”

为啥我的gmail一直提示密码错误无法登录?可是密码没有错,前几天朋友用那个密码就给我登录上一次

如何在 Ubuntu 20.04 的 pgadmin 4 中设置邮件和密码

deepin下设置pgadmin4

如何在OpenShift中运行pgAdmin?

pgadmin 4 导入/导出表不起作用