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.conftrust 身份验证,但它不知道你不是故意这样做的(比如,在创建另一个超级用户之后)。 【参考方案1】:

您可以编辑pg_hba.conf 文件以启用localhosttrust(无密码)身份验证方法。详情看这里: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的空密码登录失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在windows下手动初始化PostgreSQL数据库

sh 安装postgres 9.3

Postgres 9.3 JSON 输出多维对象

如何在 Postgres 9.3 中获取当前时区名称?

/usr/pgsql-9.3/share/extension 中不存在 Postgres plpythonu 扩展

Ubuntu下postgre与postgis安装