You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7下PostgreSQL9.2如何仅为单个用户启用MD5认证?

解决PostgreSQL 9.2针对特定用户配置MD5认证的问题

你已经在编辑pg_hba.conf上迈出了第一步,但问题大概率出在规则顺序或者用户密码设置上——PostgreSQL是从上到下匹配pg_hba.conf里的规则的,所以得把scale用户的MD5规则放在默认的peer规则前面,同时还要给这个PostgreSQL用户设置好MD5加密的密码才行。

步骤1:调整pg_hba.conf的规则顺序

先打开配置文件:

vi /var/lib/pgsql/data/pg_hba.conf

找到你现有的本地连接规则(通常是类似这样的默认配置):

# "local" is for Unix domain socket connections only
local   all             all                                     peer

一定要把针对scale用户的MD5规则放在这条peer规则的前面,添加内容如下:

# Allow the scale user to connect via MD5 from any local system account
local   all             scale                                   md5

这样设置后,当任何系统用户尝试连接PostgreSQL的scale用户时,会优先匹配这条MD5规则;而其他用户则会继续使用后面的peer认证规则,完全符合你的需求。

步骤2:为PostgreSQL的scale用户设置MD5密码

MD5认证需要用户有对应的加密密码,所以得先给scale用户设置密码:

  1. 切换到postgres系统账户(默认的PostgreSQL管理账户):
su - postgres
  1. 进入psql命令行:
psql
  1. 执行SQL语句设置密码(替换成你自己的安全密码):
ALTER USER scale WITH PASSWORD 'your_secure_password_here';
  1. 退出psql:
\q

步骤3:重新加载PostgreSQL配置

不需要重启整个服务,只需要重新加载配置让修改生效:

systemctl reload postgresql-9.2

如果你的PostgreSQL服务名是通用的postgresql,就换成systemctl reload postgresql

验证配置是否生效

现在用任意系统账户测试连接:

psql -U scale -d your_target_database

(替换your_target_database为你要连接的数据库名称,也可以省略-d参数连接默认数据库)

输入你刚才设置的密码,应该就能成功登录了。而其他用户(比如postgres或者普通系统用户)仍然会使用peer认证,无需输入密码即可登录。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:01:54