我已经在 linux (kubuntu) 和 pgadmin3 的最新版本上安装了 postgresql 9.2,但是当我连接它们时,我有这个错误:
发生错误:连接到服务器时出错:fe_sendauth:未提供密码
我能做些什么?
我还在 java 中为我的 Web 应用程序配置了 tomcat。事实上,在尝试我的应用程序之前,postgresql 就已经开始工作了。
我已经在 linux (kubuntu) 和 pgadmin3 的最新版本上安装了 postgresql 9.2,但是当我连接它们时,我有这个错误:
发生错误:连接到服务器时出错:fe_sendauth:未提供密码
我能做些什么?
我还在 java 中为我的 Web 应用程序配置了 tomcat。事实上,在尝试我的应用程序之前,postgresql 就已经开始工作了。
更改角色 postgres 的密码:
sudo -u postgres psql postgres
alter user postgres with password 'postgres';
尝试使用“postgres”连接用户名和密码。
是否需要密码取决于您在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”,那么您可以在本地连接而无需密码。
我意识到这是多年前的问题,但我今天遇到了同样的问题,并且有一个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 身份验证而不是随意共享密码的人。
最近遇到了这个问题。
如果您在本地机器上使用 PostgreSQL,并且 psql 无需记录即可正常工作,请尝试 pgadmin3 的 menu File - Add Server - Properties tab
,填写Name
此连接的字段,将Host
字段和Password
字段留空,然后单击ok
。
在基于 Unix 的系统上,地址字段可以留空以使用本地机器上的默认 PostgreSQL Unix 域套接字,或者设置为包含 PostgreSQL 套接字的备用路径。如果输入路径,则必须以“/”开头。
从事 Debian 测试(pgadmin3 1.22,PostgreSQL 11),没有接触pg_hba.conf
.
对我来说,我运行pg_ctl -D /usr/local/var/postgres start
,启动服务器,然后一切正常,它会弹出连接主机端口。