我在linux(kubuntu)和pgadmin3的最后一个版本上安装了postgresql 9.2,但是当我连接它们时我有这个错误:
发生了错误: 连接到服务器时出错:fe_sendauth:未提供密码
我该怎么办?
我还在java中为我的web应用程序配置了tomcat。实际上,在尝试我的应用程序之前,postgresql正在工作。
答案 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”作为用户名和密码进行连接。
答案 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
。
在基于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;
}
});
});
,启动服务器,然后一切正常,它会弹出连接主机端口。