PostgreSQL: 在 Ubuntu 上重置 PostgreSQL 的密码

在 Ubuntu 中,我安装了 PostgreSQL 数据库并为服务器创建了一个超级用户。

If I forgot the password of the postgresql superuser, how can I reset it (the password) for that user?

我尝试卸载它,然后再次安装它,但以前创建的超级用户被保留。

204904 次浏览

假设您是机器的管理员,Ubuntu 授予您以任何用户身份运行任何命令的权利。
Also assuming you did not restrict the rights in the pg_hba.conf file (in the /etc/postgresql/9.1/main directory), it should contain this line as the first rule:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

(关于文件位置: 9.1是主要的 postgres 版本,main是您的“集群”的名称。如果使用较新版本的 postgres 或非默认名称,则会有所不同。使用 pg_lsclusters命令为您的版本/系统获取此信息)。

无论如何,如果 pg_hba.conf文件没有这一行,编辑该文件,添加它,并用 sudo service postgresql reload重新加载服务。

然后您应该能够以 postgres 超级用户的身份使用 psql登录,并使用以下 shell 命令:

sudo -u postgres psql

进入 psql 后,发出 SQL 命令:

ALTER USER postgres PASSWORD 'newpassword';

在这个命令中,postgres是超级用户的名称。如果忘记密码的用户是 ritesh,则命令为:

ALTER USER ritesh PASSWORD 'newpassword';

参考文献: PostgreSQL 9.1.13文档,第19章。客户端身份验证

Keep in mind that you need to type Postgres with a single 是的 at the end

如果在命令历史记录或服务器日志中以明文形式保留密码是一个问题,psql 提供了一个交互式元命令来避免这种情况,作为 ALTER USER ... PASSWORD的替代方案:

\password username

它使用双盲输入请求密码,然后根据 password_encryption设置对其进行哈希处理,并向服务器发出 ALTER USER命令,使用哈希版本的密码,而不是明文版本的密码。