我正在尝试了解角色密码应该如何在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,那么我可以登录。
我不理解什么?
答案 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中提供的答案是对我有用的答案。