随着密码学技术的发展,MD5哈希算法构造的密码越来越不安全,所以,PG顺应发展,从10版本开始支持了SCRAM-SHA-256加密算法,因为使用的新的哈希算法。使得在暴力破解的时候花费的代价更加昂贵。那么,接下来,在PG中看一下如何从MD5切换到SCRAM-SHA-256。
首先,太老的的驱动不支持SCRAM-SHA-256,都会报错,如JDBC,会报The authentication type 10 is not supported。那么就需要升级驱动。

接下来就是数据库服务端修改配置:

#修改postgresql.conf参数文件
password_encryption = scram-sha-256
#重新载入配置文件
pg_ctl reload -D $PGDATA
或
SELECT pg_reload_conf();
#查看参数配置是否修改成功
SHOW password_encryption;
#重置用户密码
\password user_name
#修改pg_hba.conf验证方法,然后reload即可
如:
host  all  all  0.0.0.0/0 md5
改为
host  all  all  0.0.0.0/0 scram-sha-256

实例:

#通过\password user_name修改了hank用户密码
postgres=# select rolname,rolpassword from pg_authid where rolname in('hank','zabbix');rolname |                                                              rolpassword
---------+---------------------------------------------------------------------------------------------------------------------------------------zabbix  | md5435f13d666b53dd9b4b829e237213fd8hank    | SCRAM-SHA-256$4096:yqNGsct76W5ZjPvMxxjzRw==$NmR4QIuHRlhu+I/HP1TQ4OC6stmtgN6Oc7oZa76tKxQ=:kNOwGMU+tSbJ2QQiD1Hb/rCKX7/coQEdkeUjD9+pEhE=#pg_hba.conf没有修改,但是同样可以通过密码登陆,这是pg的一个兼容性特性,即使没写SCRAM-SHA-256,可以自动识别密码为SCRAM-SHA-256加密的,然后验证通过,而且使用老的MD5加密的用户也可以正常登陆
host  all  all  0.0.0.0/0 md5psql -h ******* -p 1921 -U hank
Password for user hank:
psql (12.6)
Type "help" for help.
hank=> #如果修改pg_hba.conf为scram-sha-256,即使zabbix用户写对密码,也无法正常登陆,如下,只有通过scram-sha-256加密的hank用户可正常登陆,也可以查看视图pg_hba_file_rules
host  all  all  0.0.0.0/0 scram-sha-256psql -h xxxxx -p 1921 -U zabbix
Password for user zabbix:
psql: error: FATAL:  password authentication failed for user "zabbix"psql -h xxxxxx -p 1921 -U hank
Password for user hank:
psql (12.6)
Type "help" for help.hank=> #修改密码后,可正常登陆
postgres=# \password zabbix
Enter new password:
Enter it again:
postgres=# select rolname,rolpassword from pg_authid where rolname in('hank','zabbix');rolname |                                                              rolpassword
---------+---------------------------------------------------------------------------------------------------------------------------------------hank    | SCRAM-SHA-256$4096:yqNGsct76W5ZjPvMxxjzRw==$NmR4QIuHRlhu+I/HP1TQ4OC6stmtgN6Oc7oZa76tKxQ=:kNOwGMU+tSbJ2QQiD1Hb/rCKX7/coQEdkeUjD9+pEhE=zabbix  | SCRAM-SHA-256$4096:Q2LODw88k0a3G9cr36Crvw==$EhBkOVbaNIxpqZADeYGCQE6LIam/k+aqmdQqBuxJM28=:Xw+ySsSGidAdvfQ/98LL38NnK1wsT96sivwtJZ144vU=
(2 rows)psql -h xxxxxxxx -p 1921 -U zabbix
Password for user zabbix:
psql (12.6)
Type "help" for help.zabbix=> 

Postgresql从MD5密码验证改为SCRAM-SHA-256相关推荐

  1. postgresql数据库用户名密码验证失败

    问题分析 (1)检查环境变量中是否指定了相关参数,比如: #export PGUSER=highgo #export PGDATABASE=highgo #export PGHOST=localhos ...

  2. java中字符串 MD5密码的加密与验证

    java中字符串 MD5密码的加密与验证   MD5即Message-Digest Algorithm 5(信息-摘要 算法 5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译 摘要 ...

  3. MD5加密及密码验证

    MD5加密是常用的加密算法.可以对任意字符串的进行加密.生成16位字符数组. 密码验证:将输入的密码进行MD5加密转换后的字符串与数据库的密码进行比对.相等则验证通过. 1 package utils ...

  4. Vue 登录密码验证 MD5加密

    一.特点 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别 ...

  5. thinkphp mysql md5加密_thinkphp会员登录密码验证md5问题。

    会员注册的时候密码md5加密存到数据库了,现在会员登录要md5密码之后去数据库查询应该怎么写?我获取表单md5后去数据库查询为什么不一样了,我的代码是 class AdminAction extend ...

  6. 忘了PostgreSQL数据库的密码的解决方案

    问题:忘了PostgreSQL数据库的密码应该如何解决? 解决方法: 首先打开data目录下的pg_hba.conf配置文件, 找到: # IPv4 local connections: host a ...

  7. HTTP 账号密码验证

    http请求带用户名和密码验证_wdk的博客-CSDN博客_url带用户名和密码 转载自:HTTP 账号密码验证_qq_25600055的专栏-CSDN博客 HTTP 账号 密码验证 17330059 ...

  8. 【逆向分析】星际争霸1998 - 绕过密码验证

    前言 此文用于学习分享,请勿用做非法用途.发布到此,仅供阅读参考,如有侵权,请通知我,我会删掉.   1. 文件信息 项目 内容 文件名 INSTALL.exe 文件大小 573 MB (601,38 ...

  9. hive 配置用户名_配置HiveServer2的安全策略之自定义用户名密码验证

    具体从网上看 http://doc.mapr.com/display/MapR/Using+HiveServer2#UsingHiveServer2-ConfiguringCustomAuthenti ...

最新文章

  1. 测试驱动开发 测试前移_测试驱动陷阱,第2部分
  2. 201771010102 常惠琢《面向对象程序设计(java)》第八周学习总结
  3. 【qduoj - 纳新题】凑数题(恰好装满类0-1背包 或 母函数)
  4. http状态码批量查询工具V2.0
  5. oracle 归档日志激增,一次归档日志激增的分析.
  6. php wecp 启动_U-boot启动详解
  7. hist函数--matplotlib
  8. 博弈论基础知识--非合作博弈,零和博弈,负和博弈,主从博弈,Nash均衡
  9. php 跨域解决方案
  10. 计算机丢失KTcontroller,无法识别Dell Perc H310 RAID控制器上的RAID驱动器
  11. 个人空间岁末大回报活动12月23日获奖名单
  12. oracle的lpad函数
  13. 运营简史:一文读懂互联网运营的20年发展与演变
  14. 3d游戏开发实训一周总结 3
  15. 架构 和 构架 定义
  16. PS2键盘扫描码:通码与断码
  17. javaee入门笔记2
  18. POE原理,千兆POE供电分离方案
  19. 社区团购,尽头似乎还很远
  20. RHEL-UEFI引导恢复规范

热门文章

  1. Selenium+Python3之:多线程进行跨浏览器测试
  2. 信息学奥赛一本通提高组2085:【21NOIP提高组】棋局
  3. 《c语言修炼内功之第二种境界(看代码就是内存)之关键字系列一》
  4. Win10 批量修改文件名
  5. Echarts角锥柱形图
  6. 解封了 开始寻找牛人
  7. pairs和ipairs的区别
  8. python判断队列是否为空_python队列Queue
  9. 打开html就自动到搜狗网扯,今天一打开IE浏览器,页就一直是搜狗网址导航,怎么改也改不掉,...
  10. 幼儿园管理系统c语言,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据...