changeUserPassword()
を使用してユーザーからパスワードを更新しようとしていますが、次のメッセージが表示されます。
エラー:ユーザーの更新に失敗しました:SCRAM-SHA-256を使用するには未消化のパスワードが必要です
> db
mydb
> db.getUsers()
[
{
"_id" : "mydb.mongo",
"user" : "mongo",
"db" : "mydb",
"roles" : [
{
"role" : "dbOwner",
"db" : "mydb"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
]
> db.changeUserPassword("mongo", "mongo_n3w_p4ss");
2019-05-22T20:58:10.128-0500 E QUERY [thread1] Error: Updating user failed: Use of SCRAM-SHA-256 requires undigested passwords :
_getErrorWithCode@src/mongo/Shell/utils.js:25:13
DB.prototype.updateUser@src/mongo/Shell/db.js:1487:15
DB.prototype.changeUserPassword@src/mongo/Shell/db.js:1491:9
@(Shell):1:1
> db.version()
4.0.5
私も pdateUser() を試しましたが、役に立ちませんでした。
何が欠けているのか、「未消化のパスワードが必要」の意味は何ですか?
基本的に、私は db.updateUser でそれを作りました。
文書には、次のように書かれています。
オプション。サーバーまたはクライアントがパスワードをダイジェストするかどうかを示します。
使用可能な値は次のとおりです。
"server"(デフォルト)サーバーはクライアントから未消化のパスワードを受け取り、そのパスワードをダイジェストします。
「クライアント」(SCRAM-SHA-256と互換性がありません)クライアントはパスワードをダイジェストし、ダイジェストしたパスワードをサーバーに渡します。
バージョン4.0で変更:デフォルト値は "server"です。以前のバージョンでは、デフォルト値は「client」です。
不明な理由により、デフォルトは「クライアント」だったようです。ちなみに、私のMongo Shell Clientはv3.6.3です。
したがって、私はpasswordDigestor
をserver
として定義しました。ログアウトし、新しいパスワードでログインしました。
> db.updateUser("mongo", {pwd:"mongo_n3w_p4ss", passwordDigestor:"server"});