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

时间:2012-12-26 03:38:35

标签: postgresql web-applications pgadmin

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

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

我该怎么办?

我还在java中为我的web应用程序配置了tomcat。实际上,在尝试我的应用程序之前,postgresql正在工作。

5 个答案:

答案 0 :(得分:11)

是否需要密码取决于pg_hba.conf中的设置。并且有不同的连接方式 - pg_hba.conf中的不同设置可能适用。

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

  

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

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

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

local    all     all     peer

或:

local    all     all     ident

..如果您的系统用户是“postgres”而您的数据库用户也是“postgres”,那么您可以在没有密码的情况下在本地连接。

答案 1 :(得分:6)

我意识到这个问题已有数年之久,但我今天遇到了同样的问题并且有一个以有限但有用的方式使用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端口,就好像它是localhost一样。当然,更换密钥,服务器并确保在本地映射到一个开放端口(如果你有一个本地postgres运行,它可能绑定到5432)。我使用了一个非常详细的标志,因此我可以轻松解决任何ssh问题。

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

psql -h 127.0.0.1 -U dev -p 5432

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

到目前为止,PgAdmin3仍然会提示您输入密码,即使是 - 白天 - 您不需要密码。但其他postgres GUI不会。试试Postico。它处于测试阶段,但效果很好。

我希望这个答案可以帮助像我这样的人,他们宁愿使用PKI进行postgres身份验证,而不是无缘无故地分享密码。

答案 2 :(得分:5)

更改角色postgres的密码:

sudo -u postgres psql postgres

alter user postgres with password 'postgres';

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

引用:How to change PostgreSQL user password

答案 3 :(得分:0)

最近遇到了这个问题。

如果您在本地计算机上使用PostgreSQL,并且psql无需记录就可以正常运行,请尝试pgadmin3的菜单static <T> Iterator<T> getReversedIterator(Iterable<T> iterable) { Iterator<T> iter = iterable.iterator(); List<T> rev = new ArrayList<>(); while (iter.hasNext()) { rev.add (0, iter.next()); } return rev.iterator(); } ,为此连接填写File - Add Server - Properties tab字段,保留Name字段,然后Host字段为空,然后单击Password

来自pgadmin docs

  

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

无需接触ok即可进行Debian测试(pgadmin3 1.22,PostgreSQL 11)。

答案 4 :(得分:0)

对我来说,我运行$(function() { $("#username_error_message").hide(); $("#password_error_message").hide(); $("#retype_password_error_message").hide(); $("#email_error_message").hide(); var error_username = false; var error_password = false; var error_retype_password = false; var error_email = false; $("#form_username").focusout(function() { check_username(); }); $("#form_password").focusout(function() { check_password(); }); $("#form_retype_password").focusout(function() { check_retype_password(); }); $("#form_email").focusout(function() { check_email(); }); function check_username() { var username_length = $("#form_username").val().length; if(username_length < 5 || username_length > 20) { $("#username_error_message").html("Should be between 5-20 characters"); $("#username_error_message").show(); error_username = true; } else { $("#username_error_message").hide(); } } function check_password() { var password_length = $("#form_password").val().length; if(password_length < 8) { $("#password_error_message").html("At least 8 characters"); $("#password_error_message").show(); error_password = true; } else { $("#password_error_message").hide(); } } function check_retype_password() { var password = $("#form_password").val(); var retype_password = $("#form_retype_password").val(); if(password != retype_password) { $("#retype_password_error_message").html("Passwords don't match"); $("#retype_password_error_message").show(); error_retype_password = true; } else { $("#retype_password_error_message").hide(); } } function check_email() { var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i); if(pattern.test($("#form_email").val())) { $("#email_error_message").hide(); } else { $("#email_error_message").html("Invalid email address"); $("#email_error_message").show(); error_email = true; } } $("#registration_form").submit(function() { error_username = false; error_password = false; error_retype_password = false; error_email = false; check_username(); check_password(); check_retype_password(); check_email(); if(error_username == false && error_password == false && error_retype_password == false && error_email == false) { return true; } else { return false; } }); }); ,启动服务器,然后一切正常,它会弹出连接主机端口。