- 我安装
PostgreSQL
在EC2
机器上,现在我想更改用户的密码postgres
- 我愿意
$ sudo -u postgres psql psql (9.1.5) Type "help" for help. postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd'; ALTER ROLE
- 然后我退出shell并尝试使用新密码登录
$ psql -U postgres -W Password for user postgres: psql: FATAL: Peer authentication failed for user "postgres"
我的PostgreSQL
版本是
$ psql --version
psql (PostgreSQL) 9.1.5
contains support for command-line editing
我做错了什么?
谢谢
更新
我进行了更改pg_hba.conf
,这就是现在的样子
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
#local all all peer
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
然后我重新启动了postgres
$ sudo /etc/init.d/postgresql restart
* Restarting PostgreSQL 9.1 database server [ OK ]
我尝试再次登录,但失败了
$ psql -U postgres -W
Password for user postgres:
psql: FATAL: Peer authentication failed for user "postgres"
就像 willglynn 说的,它可能是你的 pg_hba.conf 文件。
如果您有以下行:
然后将其更改为:
然后应该让您使用新密码登录(假设您正确提供它):)
pg_hba.conf
除了更改文件之外,我只想添加它至
根据接受的答案,在执行与 OP 相同的操作后我可以登录的唯一方法是
-h
在尝试登录时传递标志。希望这将有助于将来的某人。这让我发疯了!
你有这个...
改变:
并通过以下方式重新启动 postgresql 服务
这对我有用
在我的情况下,这是由于 docker 容器中的环境变量 POSTGRES_PASSWORD 造成的。
对于那些在多次更改密码并尝试这里提到的所有内容后发疯的人,请记住检查用户有效期。您可以像在 psql 9.x 中那样将其设置为“永不过期”: