postgres 9.3 windows的空密码登录失败
Posted
技术标签:
【中文标题】postgres 9.3 windows的空密码登录失败【英文标题】:Null password failing login for postgres 9.3 windows 【发布时间】:2014-11-16 09:35:33 【问题描述】:我将本地计算机上用户 postgres 的 postgres 密码更改为 NULL。在 SQL 窗口中使用以下命令: 更改角色 postgres WITH PASSWORD NULL;
现在,我无法再次登录,因为它要求输入密码并且不接受任何内容。由于我现在没有登录,因此无法运行 SQL 查询来更改密码。我可以在 windows 命令提示符下做些什么来改回密码吗?
【问题讨论】:
dba.stackexchange.com/q/19643/7788, ***.com/q/10845998/398670 . PostgreSQL 可能会阻止你这样做,如果它看到你的pg_hba.conf
有trust
身份验证,但它不知道你不是故意这样做的(比如,在创建另一个超级用户之后)。
【参考方案1】:
您可以编辑pg_hba.conf
文件以启用localhost
的trust
(无密码)身份验证方法。详情看这里: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
(localhost) 的无密码登录
【讨论】:
我试图更改配置文件列表中的文本:localhost:5432:*:postgres:trust 但这不起作用。有什么问题吗?还尝试了 localhost:5432:*:postgres:iden 但这也不起作用。 您的字符串格式不是pg_hba.conf
需要的格式。试试我在答案中发布的字符串。更改为pg_hba.conf
后 - 重新启动服务器。
我像这样编辑了文件底部的行,现在它可以工作了。感谢您的帮助:# IPv4 本地连接:托管所有所有 127.0.0.1/32 信任 #IPv6 本地连接:托管所有所有 ::1/128 信任
@user3789876 修复登录后不要忘记删除该行。【参考方案2】:
首先转到 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。
运行 reload postgres 服务命令
pg_ctl.exe reload -D "C:\Program Files\PostgreSQL\9.3\data"
无需密码即可进入 PgAdmin 并连接 localhost 数据库
转到属性
在定义选项卡中更改密码
然后再次将方法 trust 更改为 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
再次运行 reload postgres service 命令
pg_ctl.exe reload -D "C:\Program Files\PostgreSQL\9.3\data"
【讨论】:
以上是关于postgres 9.3 windows的空密码登录失败的主要内容,如果未能解决你的问题,请参考以下文章