最近我遇到一个问题,我无法更改 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 内部进行。通常有两种方法可以做到这一点:
通过命令行
- 打开终端(如果尚未打开)
- 切换到
postgres
帐户(或具有数据库引擎管理员权限的帐户):sudo -i -u postgres
- 连接数据库引擎:
psql
- 设置密码:
\password postgres
- 出现提示时,输入新密码
- 退出(
q
uit):\q
通过 SQL 命令
- 使用管理员级别账户连接到 PostgreSQL
- 设置密码:
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