更新用户
db.updateUser(username, update, writeConcern)
- 命令中参数username为要更新的用户名。
- update为文档类型,包含用户替换数据的文档。
- writeConcern为可选参数, 更新操作的write concern级别。
db.updateUser( "<username>", { customData : { <any information> }, roles : [ { role: "<role>", db: "<database>" } | "<role>", ... ], pwd: passwordPrompt(), // Or "<cleartext password>" authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>", | "<CIDR range>", ...] }, ... ], mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ], passwordDigestor: "<server|client>" }, writeConcern: { <write concern> } )
字段 |
类型 |
说明 |
---|---|---|
customData |
文档 |
可选。任意信息 |
roles |
数组 |
可选。授予用户的角色。 roles数组的更新将覆盖以前的数组的值。 |
pwd |
string |
可选。用户密码 |
authenticationRestrictions |
数组 |
可选。服务器对用户实施的身份验证限制,用于指定该角色可接入的IP地址或者IP地址段。 |
mechanisms |
数组 |
可选的。指定用于创建SCRAM用户凭据的特定SCRAM机制。当前只包含SCRAM-SHA-1 和SCRAM-SHA-256。 |
passwordDigestor |
string |
可选的。指示是在server端还是client端验证密码,默认是server |
示例
- 更新用户信息
products数据库中的用户appClient01,其信息如下:
{ "_id" : "products.appClient01", "token" : NumberLong("8424642624807814713"), "user" : "appClient01", "db" : "products", "customData" : { "empID" : "12345", "badge" : "9156" }, "roles" : [ { "role" : "readWrite", "db" : "products" }, { "role" : "read", "db" : "inventory" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }
下面操作会替换用户的自定义数据和角色数据:
use products db.updateUser( "appClient01", { customData : { employeeId : "0x3039" }, roles : [ { role : "read", db : "assets" } ] } )
products数据库中的用户appClient01,经过更新后信息如下:
{ "_id" : "products.appClient01", "token" : NumberLong("8424642624807814713"), "user" : "appClient01", "db" : "products", "customData" : { "employeeId" : "0x3039" }, "roles" : [ { "role" : "read", "db" : "assets" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }
- 更新用户以仅使用SCRAM-SHA-256凭证
reporting数据库中的用户reportUser256,其信息如下:
{ "_id" : "reporting.reportUser256", "token" : NumberLong("2827251846225877395"), "user" : "reportUser256", "db" : "reporting", "roles" : [ ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }
以下操作会将当前同时拥有 SCRAM-SHA-256 和 SCRAM-SHA-1 全权证书的用户更新为只拥有 SCRAM-SHA-256 全权证书的用户。
- 如果密码未与mechanisms一起指定,则只能将mechanisms更新为用户当前SCRAM机制的子集。
- 如果密码与mechanisms一起指定,则可以指定任何受支持的SCRAM机制。
- 对于SCRAM-SHA-256,passwordDigestor必须是默认值 "server"。
db.updateUser( "reportUser256", { mechanisms: [ "SCRAM-SHA-256" ] } )
reporting数据库中的用户reportUser256,经过更新后信息如下:
{ "_id" : "reporting.reportUser256", "token" : NumberLong("2827251846225877395"), "user" : "reportUser256", "db" : "reporting", "roles" : [ ], "mechanisms" : [ "SCRAM-SHA-256" ] }