Postgres:MD5密码/普通密码

时间:2017-07-30 01:29:23

标签: postgresql md5 role

我正在尝试了解角色密码应该如何在Postgres中运行。

https://www.postgresql.org/docs/current/static/sql-createrole.html表示加密/未加密

  

如果提供的密码字符串已经是MD5加密格式,则按原样加密存储,

所以我的未加密密码是:MyPassword。

“MyPassword”的MD5哈希是48503dfd58720bd5ff35c102065a52d7

如果我这样做

-- See https://www.postgresql.org/docs/9.6/static/sql-alterrole.html
ALTER ROLE "MeOhMy"
LOGIN
PASSWORD '48503dfd58720bd5ff35c102065a52d7'
;

然后在执行

时尝试使用“MyPassword”
  sudo -u postgres psql meohmy -h 127.0.0.1 -d meohmy_development

我当然首先得到提示输入我的sudo密码,然后我得到Postgres的提示“密码为meohmy”

如果我输入MyPassword,我会

FATAL:  password authentication failed for user "ralph@dos32.com"

如果我输入48503dfd58720bd5ff35c102065a52d7,那么我可以登录。

我不理解什么?

4 个答案:

答案 0 :(得分:1)

Postgresql散列密码有md5前缀:

md548503dfd58720bd5ff35c102065a52d7

答案 1 :(得分:1)

要为PostgreSQL创建md5密码,公式为:

"md5" + md5(password + username)

有3种创建方法,用户名是“ admin”,密码是“ password123” ...

Linux:

# echo -n "md5"; echo -n "password123admin" | md5sum | awk '{print $1}'
md53f84a3c26198d9b94054ca7a3839366d

注意:-n对于避免在哈希表中包含换行符至关重要!

MacOS:

➜ echo -n "md5"; md5 -qs "password123admin"                                                                                                                                                                                   
md53f84a3c26198d9b94054ca7a3839366d

Python 2:

>>> import hashlib
>>> print("md5" + hashlib.md5("password123" + "admin").hexdigest())
md53f84a3c26198d9b94054ca7a3839366d

Python 3:

如上所述,但使用二进制字符串

print("md5" + hashlib.md5(b"password123" + b"admin").hexdigest())

答案 2 :(得分:0)

在GCP Cloud SQL上使用Postgres11。 Gitlab版本gitlab-ee 13.3.4 Omnibus安装

# gitlab-ctl pg-password-md5 gitlab_user
Enter password:
Confirm password:

# echo -n <password for gitlab_user>gitlab_user | md5sum

等效。

注意:我的数据库用户是gitlab_user

答案 3 :(得分:-1)

@zerkms提供的答案部分正确。它让我得到了正确的答案。

Generating postgresql user password中提供的答案是对我有用的答案。

相关问题