使用md5加密密码而不是明文密码登录PostgreSQL

 呵呵哒 发布于 2023-01-01 15:38

我使用md5加密密码创建了一个用户,如下所示:

create user testuser with encrypted password 'md54ca03099a7cd3945e0260801ff5972a3';

加密密码是md5 +密码+用户名的组合

password=test
username=testuser

使用md5方法在pg_hba.conf文件中添加了testuser条目

现在我尝试使用上面创建的用户登录,如下所示:

psql -d dbexpress -U testuser

它会提示输入密码.我提供了以上加密密码,因此它给出了我的错误:

psql: FATAL:  password authentication failed for user "testuser"

但是我可以使用plaintest密码"test"登录postgresql.

1 个回答
  • 的认证方法md5无关系统中的目录(关键字密码的加密ENCRYPTEDCREATE ROLE):

    有关身份验证方法的文档:

    基于密码的身份验证方法是md5和密码.除了通过连接发送密码的方式外,这些方法的操作类似,分别是MD5散列和明文.

    每对文档ENCRYPTED的关键字CREATE ROLE:

    ENCRYPTED
    UNENCRYPTED

    这些关键字控制密码是否以加密方式存储在系统目录中.(如果不指定,则默认行为是由配置参数password_encryption控制.)如果所呈现的密码串已经在MD5加密的格式,然后将其存储加密原样,而不管是否ENCRYPTEDUNENCRYPTED指定(因为系统无法解密指定的加密密码字符串).这允许在转储/恢复期间重新加载加密密码.

    两者都使用md5加密,但第一个用于传输,第二个用于存储.即使使用身份验证方法(设置),您仍然需要为登录提供未加密的密码.用户名在客户端和服务器上用作md5加密的salt.md5pg_hba.conf

    第一个匹配的条目 pg_hba.conf

    关于你的评论:

    使用md5方法在pg_hba.conf文件中添加了testuser条目.

    不要只是"添加"一个条目.应用第一个匹配线pg_hba.conf!

    每篇文章pg_hba.conf:

    具有匹配的连接类型,客户端地址,请求的数据库和用户名的第一个记录用于执行身份验证.

    在所有引用中都强调了我的意思.

    2023-01-01 15:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有