忘记了在 Postgres(Windows 安装)上的管理员密码,无法重置。
忘记了在 Postgres(Windows 安装)上的管理员密码,无法重置。
我安装了Windows版本的PostgreSQL。
根据一些帖子,'postgres'用户没有设置默认密码,但我不能使用空密码字符串进行连接。
当我尝试连接时,我收到以下异常:
Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"
最相关的提示是这样的:
https://stackoverflow.com/a/25943227/1005607
打开pg_hba.conf 将md5更改为TRUST 然后重新启动PgAdmin。
我尝试过这样做并重新启动了PGAdmin,但在尝试连接时仍然要求密码:
Windows的任务管理器显示正在运行一些PostgreSQL进程,我无法关闭它们。
我尝试了以下操作,但失败了:
pg_ctl restart ERROR: pg_ctl:未指定数据库目录并且环境变量PGDATA未设置 psql.exe postgres Password: (none) ERROR: psql: fe_sendauth:未提供密码
如何重置用户'postgres'的默认密码?
在Windows上安装Postgres时忘记了管理员密码,无法重置。这个问题的出现原因是没有找到"service postgresql restart"命令。解决方法是手动更新pg_hba.conf
文件,允许信任的本地连接。然后重启PostgreSQL服务器。在这一点上,可以使用本地连接作为postgres用户连接到服务器,而无需输入密码。然后可以在psql
终端中使用以下命令更改postgres用户角色并设置新密码。完成这一步后,再次重启PostgreSQL服务器,此时密码应该已更改为新密码。
具体步骤如下:
1. 更新pg_hba.conf
文件以允许信任的本地连接:
[root] vim pg_hba.conf >> local all all trust
2. 然后重启PostgreSQL服务器:
[user] pg_ctl -D C:\PostgreSQL\data restart (Windows) [root] service postgresql restart (Linux)
3. 使用postgres用户连接到服务器,并在psql
终端中执行以下命令更改密码:
[root] psql -U postgres [psql] alter role postgres password <new_password>;
4. 完成密码更改后再次重启PostgreSQL服务器:
[user] pg_ctl -D C:\PostgreSQL\data restart (Windows) [root] service postgresql restart (Linux)
如果在Windows上找不到"service postgresql restart"命令,请参考这个答案中关于如何在Windows上重启PostgreSQL的方法。
原因:忘记了Postgres的管理员密码,无法重置。
解决方法:
1. 停止当前正在运行的Postgres服务,使用以下命令行指令,并指定"data"目录。例如,在我的情况下,目录为C:\PostgreSQL\data。
pg_ctl -D C:\PostgreSQL\data stop
2. 编辑文件pg_hba.conf(也位于\data目录)如下:
按照AK40所述,将所有MD5引用更改为trust,例如:
# 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 # Allow replication connections from localhost, by a user with the # replication privilege. host replication all 127.0.0.1/32 trust host replication all ::1/128 trust
3. 运行以下命令:
psql -U postgres
4. 在出现的PG命令提示符中输入以下命令:
ALTER USER Postgres WITH PASSWORD '<newpassword>';
5. 保存更改,输入wq
,然后按Enter键退出PG提示符。
6. 启动Postgres服务:
pg_ctl -D C:\PostgreSQL\data start
7. 如果需要,稍后可以还原pg_hba.conf中的MD5 -> Trust更改。
备注:
- 如果服务器已停止,如何使用psql -U postgres
命令?
- 这是重新启动服务器的方法。
- 如果我的Postgres安装在“Program Files”目录中,如何使用第一个命令?