我是这类数据库的新手,我尝试通过指定psql的命令行连接到它,然后输入密码为空。我得到了上述错误(在这个问题的标题中)。
我不知道默认密码是什么。
pg_hba文件:
IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
host replication DIMA 127.0.0.1/32 trust
host replication DIMA ::1/128 trust
postgresql.config
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost', '*' = all
# (change requires restart)
port = 5432 # (change requires restart)
我以这种方式重启服务器:
C:\metasploit\postgresql\bin\pg_ctl -D "C:\metasploit\postgresql\myData" -l logfile start
我想要的只是进入数据库并更改我的密码。并且最好进入PgAdmin-III(以GUI形式)
答案 0 :(得分:2)
如果您使用的是trust
身份验证(您只应该用于开发,如果是这样),则psql
不会提示您输入密码。
我说你没有正确重启服务器。也许使用restart
代替start
?
答案 1 :(得分:0)
正如Craig所说,你可能没有重新启动服务器,你应该使用restart而不是start。 (重新加载可能也可以,但在Windows上不能确定)
但这不是你的问题。关键问题几乎可以肯定是您没有连接到localhost,并且pg_hba.conf
中的行需要来自其他主机的密码。
请注意,如果您连接到外部IP地址,则会遇到不同或更常规的规则。
此错误基本上意味着pg_hba.conf
文件设置为密码验证但未提供密码。如果您无法快速找到问题,那么连接的IP地址应该位于postgresql日志文件中。
至于使用信任,您应该在更改密码后将其更改回来。通常我同意Craig的观点,即不应该在开发之外使用信任身份验证,但它是重要用户密码重置的合法方法,而在Windows上,这必须以平台上支持的方式完成。
作为最后一点,问题是你是如何登录的。如果你要设置它,你应该使用psql -h 127.0.0.1 [dbname]
来确保Windows不会做一些奇怪的事情,比如尝试使用机器名连接(以及外部知识产权)。