PostgreSQL 19提示MD5弃用,SCRAM迁移怎样做
出现MD5警告并不表示登录口令错误,而是在提醒旧认证方式已经弃用。19仍保留MD5,但应为以后升级提前安排SCRAM-SHA-256迁移。
完整迁移涉及实际客户端、账号保存的口令信息,以及pg_hba.conf中的匹配规则。只处理其中一项,可能仍未迁完,也可能让旧客户端突然连接失败。
一、先分清两个容易混淆的设置
password_encryption负责以后设置口令时采用的保存格式,pg_hba.conf负责连接认证方式。更改前者,不会自动重写已有MD5口令。
还有一个过渡行为:登录规则写 md5,但用户保存的口令已经是 SCRAM 格式时,数据库会自动使用 SCRAM。这有助于逐个账号迁移,但也说明只看规则里的 md5 三个字,不能完全判断实际认证过程。
二、先找出哪些登录账号还存着 MD5 口令
由管理员执行下面的查询,只返回口令格式,不输出口令校验串:
pg_authid 需要较高权限。不要为了方便,把这张表的完整内容导出到普通工单或共享文件。需要统计的是哪些账号要处理,不是把校验串传给更多人。
同时检查驱动、连接池、监控和备份工具是否支持 SCRAM。先用测试账号新建连接验证,再安排业务账号。某台电脑上的新客户端能连,不代表生产应用使用的旧依赖也能连。
三、逐个重设口令,生成 SCRAM 格式
在合适的管理员 psql 会话中,先确认口令生成方式,再交互式修改指定账号:
这里的 app_user 要替换为实际账号。交互式输入可以减少把明文口令写进脚本和命令历史的机会。若这次同时换了新口令,还需要同步更新应用保存的凭据,并安排连接池重连。
即便继续使用相同明文口令,也必须重新设置一次,数据库才能生成新的 SCRAM 校验信息。仅持有旧 MD5 校验串,不能直接把它变成所需的 SCRAM 信息。
四、确认客户端正常后,再收紧登录规则
先从明确的账号和来源网段开始。若服务器已配置 TLS,可以采用类似规则:
不要把示例网段直接照搬,也不要为了迁移扩大允许连接的范围。检查前面有没有更早匹配的规则,再检查配置文件错误:
文件检查通过后,按环境要求重载并查看日志。保留有效管理连接,再从应用所在环境新建连接,实际测试读写与后台任务。
五、遇到连接失败,先查哪里?
| 现象 | 排查方向 |
|---|---|
| 提示客户端不支持认证方式 | 升级实际使用的驱动和连接池,不只是本机 psql |
| 仍提示口令格式不匹配 | 确认该账号是否重新设置过 SCRAM 口令 |
| 修改规则后似乎没变化 | 检查规则顺序、文件是否正确加载及连接是否新建 |
| 人工测试正常,定时任务失败 | 查任务自己的依赖版本和凭据配置 |
关闭md5_password_warnings只能减少提醒,客户端、账号口令和规则并没有因此改变,不能把它当成已迁移。
先验证客户端能力,再分组更新口令和连接,最后明确使用SCRAM规则。完成后重新统计口令格式,确认真实使用方都能重新登录。
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏