在 Ubuntu 中,我安装了 PostgreSQL 数据库并为服务器创建了一个超级用户。
如果我忘记了 postgresql 超级用户的密码,我该如何为该用户重置它(密码)?
我尝试卸载它,然后再次安装,但保留了之前创建的超级用户。
在 Ubuntu 中,我安装了 PostgreSQL 数据库并为服务器创建了一个超级用户。
如果我忘记了 postgresql 超级用户的密码,我该如何为该用户重置它(密码)?
我尝试卸载它,然后再次安装,但保留了之前创建的超级用户。
假设您是机器的管理员,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
如果在命令历史记录或服务器日志中以明文形式留下密码是一个问题,psql 提供了一个交互式元命令来避免这种情况,作为替代ALTER USER ... PASSWORD
:
\password username
它通过双盲输入请求密码,然后根据设置对其进行哈希处理,并使用密码的哈希版本而不是明文版本向服务器password_encryption
发出命令。ALTER USER