PostgreSQLで暗号化されたパスワードを持つユーザを作成する
PostgreSQL で、平文のパスワードを入力せずにユーザを作成することは可能ですか (理想的には、sha-256 で暗号化したパスワードのみを入力するユーザを作成したいです)。
私がやりたいのは、このようなものでユーザーを作ることです。
CREATE USER "martin" WITH PASSWORD '$6$kH3l2bj8iT$KKrTAKDF4OoE7w.oy(...)BPwcTBN/V42hqE.';
何か方法があるのでしょうか?
よろしくお願いします。
42
3
doc (CREATE ROLE) にあるように、
md5
でハッシュ化したパスワードを提供することもできます。ENCRYPTED UNENCRYPTED これらのキーワードは、パスワードの保存の有無を制御します。 システムカタログに暗号化して保存されます。(どちらも指定しない場合は デフォルトの動作は、設定パラメータ パスワードの暗号化(password_encryption)。**提示されたパスワード文字列がすでに MD5で暗号化された形式で保存される場合は、以下の条件に関わらず、そのまま暗号化されて保存されます。 ENCRYPTEDとUNENCRYPTEDのどちらを指定しても(システム上では 指定された暗号化されたパスワード文字列を復号化します)。これによって ダンプ/リストア時に暗号化されたパスワードの再読み込みを行います。
ここで足りない情報は、MD5で暗号化された文字列は、パスワードとユーザー名を連結し、先頭に
md5
を付けたものでなければならないということです。例えば、
u0
をパスワードfoobar
で作成する場合、md5('foobaru0')
はac4bbe016b808c3c0b816981f240dcae
であると知っているわけです。と入力すると、u0はパスワードとして
foobar
を入力してログインできるようになります。PostgreSQL のパスワードに
md5
の代わりにSHA-256
を使用する方法は、今のところないと思われます。パスワードのデフォルトの md5 暗号化を上書きする方法は存じ上げませんが、md5 暗号化済みのパスワードを持つ ROLE (別名 "USER") があれば、それを提供することができるようです。pg_dumpall -g (クラスタのグローバルを見る)を使用してこれを確認してください。 例
CREATE ROLE]1のDocs。
もっと簡単な方法です。
CREATE USER u0 PASSWORD 'foobar';
.パスワードは
md5ac4bbe016b808c3c0b816981f240dcae
となります。