我在Linux(Kubuntu)上安装了PostgreSQL 9.2和最新版本的pgAdmin3,但是当我连接它们时出现以下错误:
发生错误: 无法连接到服务器:fe_sendauth:未提供密码
我该怎么办?
我还为我的Java Web应用程序配置了Tomcat。 实际上,在尝试应用程序之前,PostgreSQL 已经在工作。
我在Linux(Kubuntu)上安装了PostgreSQL 9.2和最新版本的pgAdmin3,但是当我连接它们时出现以下错误:
发生错误: 无法连接到服务器: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套接字连接,则适用“local”的规则。 而当通过TCP/IP连接时,适用“host”(或“hostssl”)规则。
如果您在pg_hba.conf文件的顶部有这样一行:
"local all all peer
或者:
local all all ident
如果您的系统用户和数据库用户都是“postgres”,那么您可以在本地连接时无需密码。
我知道这个问题已经有多年了,但今天我遇到了同样的问题,并且有一个使用trust
的解决方案,虽然它非常有限但也很有用。
就像在许多开发商店中一样,当开发人员需要QA postgres密码时,他们会大喊大叫、发送信息、发送电子邮件、在额头上写下密码等等。而我想:「这真的很糟糕。我需要找出一种在这里使用PKI的方法。」我们还使用pgAdmin3.
首先,在您的pg_hba.conf文件中添加像这样的行,其中dev
表示您商店中的开发人员用户:
host all dev 127.0.0.1/32 trust
将开发人员的公钥放入数据库服务器上的其授权密钥文件夹中。现在让他们使用类似以下命令的-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认证而不是随意共享密码的人。
最近遇到了这个问题。
如果您在本地机器上使用PostgreSQL,并且psql可以正常工作而无需登录,则尝试使用pgadmin3的菜单文件-添加服务器-属性选项卡
,为此连接填写名称
字段,将主机
字段和密码
字段留空,然后单击确定
。
在基于Unix的系统上,地址字段可以留空以使用本地机器上的默认PostgreSQL Unix域套接字,或设置为包含PostgreSQL套接字的备用路径。 如果输入路径,则必须以“/”开头。
在Debian测试版(pgadmin3 1.22,PostgreSQL 11)上运行,无需触及pg_hba.conf
。
pg_ctl -D /usr/local/var/postgres start
,启动服务器,然后一切正常,连接主机端口就会弹出。
$ psql -U <username> -h <hostname> <dbname>
如果您想使用Unix域套接字连接,则可以省略-h <hostname>。 - Eelke