Dar*_*fee 18 postgresql web-applications pgadmin
我在linux(kubuntu)和pgadmin3的最后一个版本上安装了postgresql 9.2,但是当我连接它们时,我有这个错误:
发生错误:连接到服务器时出错:fe_sendauth:未提供密码
我能做什么?
我还在java中为我的web应用程序配置了tomcat.事实上,在尝试我的应用程序之前,postgresql正在运行.
Pas*_*hal 24
更改角色 postgres 的密码:
sudo -u postgres psql postgres
alter user postgres with password 'postgres';
Run Code Online (Sandbox Code Playgroud)
尝试使用“postgres”作为用户名和密码进行连接。
Erw*_*ter 12
是否需要密码取决于您的设置pg_hba.conf.您可以通过不同的方式进行连接 - pg_hba.conf中的不同设置可能适用.
我引用了pgAdmin附带的帮助,用于连接("服务器")设置中的"主机"字段:
主机是要联系的计算机的IP地址,或完全限定的域名.在基于Unix的系统上,地址字段可以留空以在本地计算机上使用默认的PostgreSQL Unix域套接字,或者设置为包含PostgreSQL套接字的备用路径.如果输入路径,则必须以"/"开头.也可以指定端口号.
如果通过Unix套接字连接,则"本地"规则适用.而通过TCP/IP连接时,"host"(或"hostssl")规则适用.
如果你的pg_hba.conf文件顶部有这样一行:
local all all peer
Run Code Online (Sandbox Code Playgroud)
要么:
local all all ident
Run Code Online (Sandbox Code Playgroud)
..如果您的系统用户是"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
这允许使用postgres端口,就好像它是localhost一样.当然,更换密钥,服务器并确保在本地映射到一个开放端口(如果你有一个本地postgres运行,它可能绑定到5432).我使用了一个非常详细的标志,因此我可以轻松解决任何ssh问题.
打开另一个终端并发出以下命令:
psql -h 127.0.0.1 -U dev -p 5432
您应该可以访问数据库,并且永远不会被提示输入密码,我认为这很好,否则,开发人员只会放弃密码而不考虑安全性,将其传递出来,就像万圣节糖果一样.
截至目前,PgAdmin3仍然会提示您输入密码,即使 - 显然是白天 - 您不需要密码.但其他postgres GUI不会.试试Postico.它处于测试阶段,但效果很好.
我希望这个答案可以帮助像我这样的人,他们宁愿使用PKI进行postgres身份验证,而不是无缘无故地分享密码.