pgadmin 给我错误:没有提供密码
Posted
技术标签:
【中文标题】pgadmin 给我错误:没有提供密码【英文标题】:pgadmin gives me the error: no password supplied 【发布时间】:2012-12-11 17:24:52 【问题描述】:我已经在 linux (kubuntu) 上安装了 postgresql 9.2 和 pgadmin3 的最新版本,但是当我连接它们时出现这个错误:
发生错误: 连接服务器时出错:fe_sendauth:未提供密码
我能做什么?
我还在 java 中为我的 Web 应用程序配置了 tomcat。事实上,在尝试我的应用程序之前,postgresql 已经在工作了。
【问题讨论】:
我的密码是空的,所以我是在有请求的时候才输入的。 您可以尝试从命令行连接吗?$ psql -U <username> -h <hostname> <dbname>
如果您想使用 unix 域套接字连接,可以省略 -h 更改角色 postgres 的密码:
sudo -u postgres psql postgres
alter user postgres with password 'postgres';
尝试使用“postgres”作为用户名和密码进行连接。
参考:How to change PostgreSQL user password
【讨论】:
非常感谢@Paschal【参考方案2】:是否需要密码取决于您在pg_hba.conf
中的设置。您可以使用不同的方式进行连接 - pg_hba.conf 中的不同设置可能适用。
我引用了 pgAdmin 3 附带的帮助,用于连接(“服务器”)设置中的“主机”字段:
主机是要联系的机器的 IP 地址,或者完全 合格的域名。在基于 Unix 的系统上,地址字段可能是 留空以使用默认的 PostgreSQL Unix 域套接字 本地机器,或设置为包含 PostgreSQL 的备用路径 插座。如果输入路径,则必须以“/”开头。港口 也可以指定编号。
如果您通过 Unix 套接字连接,则适用“本地”规则。 而通过 TCP/IP 连接时,“host”(或“hostssl”)规则适用。
如果您的 pg_hba.conf 文件顶部有这样一行:
local all all peer
或:
local all all ident
.. 如果您的系统用户是“postgres”并且您的数据库用户也是“postgres”,那么您可以在本地连接而无需密码。
【讨论】:
我改变了 # "local" 仅用于 Unix 域套接字连接 local all all peer # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 本地连接: 托管所有所有 ::1/128 信任 并且有效!谢谢!! @DarkCoffee:我认为您知道trust
设置不安全。
这对于version3可能是正确的,但是在pgAdmin 4上,主机名/地址字段不能留空;它会产生错误。【参考方案3】:
我意识到这是多年前的问题,但我今天遇到了同样的问题,并且有一个解决方案以有限但有用的方式使用 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 端口。当然,更换密钥,服务器并确保映射到本地开放端口(如果您有本地 postgres 运行,它可能绑定到 5432)。我使用了一个非常详细的标志,因此我可以轻松解决任何 ssh 问题。
打开另一个终端并发出以下命令:
psql -h 127.0.0.1 -U dev -p 5432
您应该可以访问数据库,并且永远不会提示您输入密码,我认为这很好,因为否则,开发人员将放弃密码而几乎不考虑安全性,就像万圣节糖果一样传递出去。
截至目前,PgAdmin3 仍会提示您输入密码,即使 - 就像白天一样 - 您不需要它。但其他 postgres GUI 不会。试试 Postico。它处于测试阶段,但效果很好。
我希望这个答案能帮助像我这样宁愿使用 PKI 进行 postgres 身份验证而不是随意共享密码的人。
【讨论】:
日志文件为我提供了 pg_hba.conf 中的规则按顺序处理的附加信息。我不得不将我的规则移到更广泛的规则之上,这样它才会产生影响。谢谢!【参考方案4】:最近遇到这个问题。
如果您在本地机器上使用 PostgreSQL,并且 psql 无需记录即可正常工作,请尝试 pgadmin3 的菜单 File - Add Server - Properties tab
,为此连接填写 Name
字段,将 Host
字段和 Password
字段留空,并点击ok
。
来自pgadmin docs
在基于 Unix 的系统上,地址字段可以留空以使用 本地机器上的默认 PostgreSQL Unix 域套接字,或者被设置 到包含 PostgreSQL 套接字的备用路径。如果路径是 输入时,必须以“/”开头。
从事 Debian 测试(pgadmin3 1.22,PostgreSQL 11),没有接触过pg_hba.conf
。
【讨论】:
【参考方案5】:对我来说,我运行pg_ctl -D /usr/local/var/postgres start
,启动服务器,然后一切正常,它会弹出连接主机端口。
【讨论】:
以上是关于pgadmin 给我错误:没有提供密码的主要内容,如果未能解决你的问题,请参考以下文章
在 PgAdmin 中取回服务器提示错误“致命:用户“postgres”的密码验证失败”
为啥我的gmail一直提示密码错误无法登录?可是密码没有错,前几天朋友用那个密码就给我登录上一次