无法更改 PostgresSQL 默认用户密码

无法更改 PostgresSQL 默认用户密码

最近我遇到一个问题,我无法更改 pgAdmin 用于连接远程数据库的密码...

pg_hba.conf(PostgresSQL 12)中,我有以下登录功能:

# 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
# IPv4 local connections:
host    all             all             0.0.0.0/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
hostnossl       all     all             0.0.0.0/0               trust

我尝试更改postgres用户密码,也尝试更改postgres数据库中角色的密码,但没有任何帮助......

有没有办法更改连接 PostgresSQL 的默认密码?

答案1

passwd命令用于更改 Linux 用户帐户的密码。要更改 PostgreSQL 帐户的密码,您需要从 PostgreSQL 内部进行。通常有两种方法可以做到这一点:

通过命令行

  1. 打开终端(如果尚未打开)
  2. 切换到postgres帐户(或具有数据库引擎管理员权限的帐户):
    sudo -i -u postgres
    
  3. 连接数据库引擎:
    psql
    
  4. 设置密码:
    \password postgres
    
  5. 出现提示时,输入新密码
  6. 退出( quit):
    \q
    

通过 SQL 命令

  1. 使用管理员级别账户连接到 PostgreSQL
  2. 设置密码:
    ALTER USER postgres WITH PASSWORD 'superSecretPassword!123';
    

从这里,您可以编辑 pgAdmin 配置以获取新密码。

笔记: 使用以下方式远程连接 PostgreSQL 数据库通常是一种不好的做法 postgres 帐户,因为这对于心怀不轨的人而言是一个更容易攻击的目标。如果您正在远程管理数据库,请考虑创建具有管理员权限的用户帐户。如果远程服务器运行的是 Linux,您可以通过 SSH 隧道连接来进一步保护数据库。

答案2

问题是我使用了以下行pg_hba.conf

...
hostnossl       all     all             0.0.0.0/0               trust

这样就不需要使用密码来连接数据库

我将其改为:

hostnossl       all     all             0.0.0.0/0               md5

相关内容