在Ubuntu上重置PostgreSQL的密码[关闭]


91

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

如果我忘记了postgresql超级用户的密码,该如何为该用户重置密码(密码)?

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

Answers:


208

假设您是计算机的管理员,Ubuntu已授予您sudo的权限,以任何用户身份运行任何命令。
还要假设您没有限制pg_hba.conf文件(在/etc/postgresql/9.1/main目录中)的权限,它应该包含以下行作为第一条规则:

# 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

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

sudo -u postgres psql

进入psql后,发出SQL命令:

ALTER USER postgres PASSWORD 'newpassword';

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

ALTER USER ritesh PASSWORD 'newpassword';

参考:PostgreSQL 9.1.13文档,第19章。客户端认证

请记住,您需要在结尾输入带有单个S的postgres


2
我使用了您的方法,我的超级用户名是ritesh我的pg_hba.conf就是您所说的。我运行命令“ ALTER USER postgres PASSWORD'newpassword';” 控制台显示“ ALTER ROLE”。然后,在运行命令createuser之后,我使用ctrl + c退出。显示输入密码时输入了newpassword,但出现错误“ createuser:无法连接至数据库postgres:FATAL :用户“ ritesh”的密码认证失败。如何创建用户,该命令的密码是什么?
Ritesh Mehandiratta

如果您想更改密码ritesh,请将上面的SQL更改为ALTER USER ritesh PASSWORD 'newpassword'
DanielVérité2013年

您应该在更改pg_hba.conf后重新启动postgres。...–
Mahdi

1
无需重启,只需使用pg_ctl reload即可。
hbn 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.