2014-09-22 41 views
0

我更改postgres密码为NULL为我的本地计算机上的用户postgres。在SQL窗口中使用以下命令: ALTER ROLE postgres WITH PASSWORD NULL;空密码失败登录postgres 9.3窗口

现在,我不能再次登录,因为它要求输入密码并且不接受任何内容。我无法运行SQL查询来更改密码,因为我现在没有登录。我可以通过Windows命令提示符来更改密码吗?

+0

http://dba.stackexchange.com/q/19643/7788,http://stackoverflow.com/q/10845998/398670。 – 2014-09-22 12:43:18

+0

如果PostgreSQL发现你的'pg_hba.conf'具有'trust'认证,但它不知道你故意不这样做(比如创建另一个超级用户之后),否则PostgreSQL可能会阻止你这样做。 – 2014-09-22 12:45:49

回答

1

您可以编辑pg_hba.conf文件启用trust(无密码)验证方法localhost。详情点击这里:http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

添加

host all    all    127.0.0.1/32   trust 

pg_hba.conf文件的开始将使无密码登录从127.0.0.1/32(本地主机)

+0

我试图改变配置文件列表中的文本:localhost:5432:*:postgres:trust
但这不起作用。它有什么问题吗?还试过localhost:5432:*:postgres:iden,但这也不起作用。 – Cagg 2014-09-22 12:16:14

+1

你的字符串的格式不是'pg_hba.conf'所需的格式。尝试我在答案中发布的字符串。更改为'pg_hba.conf'后 - 重新启动服务器。 – 2014-09-22 12:19:01

+0

我像这样编辑了文件底部的行,现在它可以工作。感谢您的帮助:#IPv4本地连接: 主机全部全部127.0.0.1/32信任 #IPv6本地连接: 主机全部:: 1/128信任 – Cagg 2014-09-22 12:49:50

1

首先去pg_hba.conf文件并打开它任何编辑器(记事本或记事本++)。

地点

的pg_hba.conf主要是

C:\Program Files\PostgreSQL\9.3\data 

更改方法MD5信任

#TYPE DATABASE  USER   ADDRESS     METHOD 
# IPv4 local connections: 
host all    all    127.0.0.1/32   trust 
# IPv6 local connections: 
host all    all    ::1/128     trust 

而不是

# TYPE DATABASE  USER   ADDRESS     METHOD 
# IPv4 local connections: 
host all    all    127.0.0.1/32   md5 
# IPv6 local connections: 
host all    all    ::1/128     md5 

然后保存。

运行命令提示符管理员,并转到

C:\Program Files\PostgreSQL\9.3\bin

目录通过CMD。

运行的重载Postgres的服务命令

pg_ctl.exe reload -D "C:\Program Files\PostgreSQL\9.3\data" 

得pgAdmin的,并且不使用密码

Start pgadmin

进入属性连接本地主机数据库

Open properties

变化定义选项卡

Change password

然后再次改变方法信任MD5密码。

# TYPE DATABASE  USER   ADDRESS     METHOD 
# IPv4 local connections: 
host all    all    127.0.0.1/32   md5 
# IPv6 local connections: 
host all    all    ::1/128     md5 

再次运行重载postgres的服务命令

pg_ctl.exe reload -D "C:\Program Files\PostgreSQL\9.3\data"