假设你是机器的管理员,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
作为 postgres 超级用户使用以下 shell 命令:
sudo -u postgres psql
进入 psql 后,发出 SQL 命令:
ALTER USER postgres PASSWORD 'newpassword';
在此命令中,postgres
是超级用户的名称。如果忘记密码的用户是ritesh
,命令为:
ALTER USER ritesh PASSWORD 'newpassword';
参考:PostgreSQL 9.1.13 文档,第 19 章。客户端身份验证 http://www.postgresql.org/docs/9.1/interactive/client-authentication.html
请记住,您需要输入postgres与单个S在最后
如果在命令历史记录或服务器日志中以明文形式保留密码是一个问题,psql 提供了一个交互式元命令来避免这种情况,作为替代ALTER USER ... PASSWORD
:
\password username
它要求双盲输入密码,然后根据password_encryption https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-PASSWORD-ENCRYPTION设置并发出ALTER USER
使用密码的哈希版本而不是明文版本向服务器发送命令。