Mongodb
無法在 Mongodb 4.0.5 上更新使用者密碼(使用 SCRAM-SHA-256 需要未消化的密碼)
我正在嘗試使用 更新使用者的密碼,
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
我也試過updateUser(),但沒用。
我錯過了什麼,“需要未消化的密碼”是什麼意思?
基本上,我是用db.updateUser 做到的。
在文件上,它說以下內容:
- 密碼消化器:字元串
選修的。指示伺服器或客戶端是否消化密碼。
可用值為:
“server”(預設)伺服器從客戶端接收未消化的密碼並消化密碼。
“client”(與 SCRAM-SHA-256 不兼容)客戶端消化密碼並將消化後的密碼傳遞給伺服器。
在 4.0 版更改: 預設值為“伺服器”。在早期版本中,預設值為“client”。
出於未知原因,預設值似乎是“客戶端”。順便說一句,我的 Mongo Shell 客戶端是 v3.6.3。
因此,我只是定義
passwordDigestor
為server
,並且確定。註銷並使用新密碼登錄。> db.updateUser("mongo", {pwd:"mongo_n3w_p4ss", passwordDigestor:"server"});
安裝與 mongo 伺服器版本相同的 mongo shell 版本為我解決了這個問題。我也收到了版本不匹配 4.0 和 4.4 的錯誤。它應該完全相同。在此處下載 mongo shell/其他包