在 bash 部署时将初始用户插入我的数据库

Inserting an initial user into my database on bash deployment

我正在尝试在部署时在我的 postgresql 数据库中创建一个初始用户。显然我需要为用户生成我想要的密码的 pbkdf2:sha1 密钥。

例如,假设我想添加一个用户名 "admin" 和密码 "admin" 的管理员帐户,我需要先对密码 "admin" 进行哈希处理,然后再将其插入 [=29] =] 我相信。

任何人都可以告诉我如何在 bash 中执行此操作,例如,我尝试了一些类似的方法,但似乎没有用:

ADMIN_PASSWORD=admin
openssl dgst -sha1 -hmac "$ADMIN_PASSWORD"

编辑:这是 postgres 数据库的密码,这就是为什么在插入之前需要对其进行哈希处理的原因。我想在 bash 而不是 python 中实现此散列。

由于这是一次性任务,哈希值永远不会改变 - 它是一个常量,所以请这样编码:

发现您的应用程序将为密码为 "admin" 的 "admin" 用户创建什么散列,并将其硬编码到您的 bash 脚本中。

输入应该通过标准输入。这样做:

ADMIN_PASSWORD=admin
echo -n "${ADMIN_PASSWORD}" | openssl dgst -sha1 -hmac

你会得到输出

d033e22ae348aeb5660fc2140aec35850c4da997

在标准输出上。如果您希望将其保存到一个变量中以供以后引用,请执行

ADMIN_PASSWORD=admin
SHA1SUM=$(echo "${ADMIN_PASSWORD}" | openssl dgst -sha1 -hmac)

后来将散列称为 ${SHA1SUM}

注意:${ADMIN_PASSWORD}${SHA1SUM} 中的花括号是可选的。

为什么不让 PostgreSQL 为您生成散列?函数 crypt()gen_salt() 带有一些示例,请参阅 documentation.