我在Ubuntu系统中安装了PostgreSQL数据库并为该服务器创建了一个超级用户。
如果我忘记了postgresql超级用户的密码,我该如何为该用户重置密码?
我尝试卸载并重新安装,但之前创建的超级用户得到保留。
我在Ubuntu系统中安装了PostgreSQL数据库并为该服务器创建了一个超级用户。
如果我忘记了postgresql超级用户的密码,我该如何为该用户重置密码?
我尝试卸载并重新安装,但之前创建的超级用户得到保留。
假设您是机器管理员,Ubuntu已授予您使用sudo以任何用户身份运行任何命令的权利。
同时,假设您没有在/etc/postgresql/9.1/main
目录下的pg_hba.conf
文件中限制权限,则应将以下行作为第一条规则:
# 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
重新加载服务。
然后,您应该能够使用此shell命令以postgres超级用户身份登录:psql
。
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
如果在命令历史记录或服务器日志中以明文形式留下密码是个问题,psql提供了一种交互式元命令来避免这个问题,作为 ALTER USER ... PASSWORD
的替代方法:
\password username
它通过双盲输入要求密码,然后根据password_encryption
设置对其进行散列,并使用散列版本的密码而不是明文版本向服务器发出ALTER USER
命令。
ritesh
的密码,请将上面的 SQL 更改为ALTER USER ritesh PASSWORD 'newpassword'
。 - Daniel Vérité\password postgres
命令设置了密码为qwe123
,但在执行sudo apt update
命令并输入密码时,出现了错误提示Sorry, try again.
。 - EgoPingvinasudo
命令的一条消息。sudo
要求输入的密码是您的shell账户密码。使用\password postgres
设置的密码是数据库账户密码。这两个密码是独立的。 - Daniel Vérité