30

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

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

我能做些什么?

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

4

5 回答 5

27

更改角色 postgres 的密码:

sudo -u postgres psql postgres

alter user postgres with password 'postgres';

尝试使用“postgres”连接用户名和密码。

参考:如何修改PostgreSQL用户密码

于 2020-07-02T15:04:30.270 回答
14

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

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

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

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

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

local    all     all     peer

或者:

local    all     all     ident

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

于 2012-12-26T15:13:11.000 回答
10

我意识到这是多年前的问题,但我今天遇到了同样的问题,并且有一个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

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

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

psql -h 127.0.0.1 -U dev -p 5432

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

到现在为止,PgAdmin3 仍然会提示您输入密码,即使——就像白天一样——你不需要它。但其他 postgres GUI 不会。试试 Postico。它处于测试阶段,但效果很好。

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

于 2015-09-22T20:36:10.523 回答
0

最近遇到了这个问题。

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

来自pgadmin 文档

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

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

于 2019-02-17T08:01:57.997 回答
0

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

于 2021-01-22T05:30:14.277 回答