MongoDB 用户管理命令
MongoDB用户管理命令包含与用户相关的命令。我们可以使用以下用户管理命令来创建、删除和更新用户。
MongoDB createUser命令
MongoDB createUser命令为数据库创建一个新用户,这个数据库是我们运行该命令的数据库。如果用户已经存在,它将返回重复用户错误。
语法:
{
createUser: "<user_name>",
pwd: "<cleartext password>"
customData: { <any info.> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
writeConcern: { <write concern> },
authenticationRestrictions: [
{ clientSource: [ "<IP|CIDR range>", ... ], serverAddress: [ "<IP|CIDR range>", ... ] },
...
],
mechanisms: [ "<scram-mechanism>", ...],
digestPassword: <boolean>
}
createUser命令具有以下字段:
字段 | 类型 | 描述
—|—|—
createUser | string | 此字段包含新用户的名称。
pwd | string | 此字段包含用户的密码。该值可以是用户的明文密码字符串,也可以是passwordPrompt()来提示用户输入密码。
customData | document | 此字段包含管理员希望与特定用户关联的数据。
roles | array | 表示给用户赋予任何角色。
digestPassword | boolean | digestPassword指示密码是由服务器或客户端摘要的。
writeConcern | document | 此字段包含创建操作的写入关注度。
authentication Restrictions | array | 它对创建的用户强制执行认证规则。它提供了一个允许用户连接的IP地址和CIDR范围列表。
mechanism | array | 此字段指定了SCRAM机制。有效的SCRAM值为SCRAM-SHA-1和SCRAM-SHA-256。
示例:
db.getSiblingDB("student").runCommand( {
createUser: "admin@javaTpoint",
pwd: passwordPrompt(),
customData: { empId: 101 },
roles: [
{ role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
],
writeConcern: { w: "majority" , wtimeout: 5000 }
} )
上面的示例在student数据库上创建了一个名为admin@javaTpoint的用户。该命令为admin@javatpoint用户在admin数据库上赋予了clusterAdmin和readAnyDatabase角色,并在student数据库上赋予了readwrite角色。
MongoDB dropUser命令
MongoDB dropUser命令从运行命令的数据库中删除用户。
语法:
{
dropUser: "<user>",
writeConcern: { <write concern> }
}
dropUser命令字段:
字段 | 类型 | 描述 |
---|---|---|
dropUser | string | dropUser字段包含您要删除的用户名。 |
writeConcern | document | 该字段包含移除操作的写入关注级别。 |
示例:
use products
db.runCommand( {
dropUser: " admin@javaTpoint ",
writeConcern: { w: "majority", wtimeout: 5000 }
} )
MongoDB updateUser 命令
MongoDB updateUser 命令用于在运行命令的数据库中更新用户的详细信息。当我们使用该命令时,它将完全替换先前字段的值,包括分配的角色和 authenticationRestrictions 数组。
语法:
{
updateUser: "<user_name>",
pwd: "<cleartext password>"
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>", | "<CIDR range>", ...]
},
...
],
mechanisms: [ "<scram-mechanism>", ... ],
digestPassword: <boolean>,
writeConcern: { <write concern> }
}
字段 | 类型 | 描述 |
---|---|---|
updateUser | 字符串 | 包含需要更新的用户的名称。 |
pwd | 字符串 | 包含用户的密码,或者可以使用密码提示来提示输入密码。 |
customData | 文档 | 该字段包含管理员希望在特定用户中更新的数据。 |
roles | 数组 | 该字段给用户分配一个角色。 |
digestPassword | 布尔值 | 如果服务器或客户端需要摘要密码,则指示为真。 |
writeConcern | 文档 | 该字段包含创建操作的写入关注点。 |
authentication Restrictions | 数组 | 它强制执行对创建的用户的身份验证规则。它提供了一个IP地址和CIDR范围的列表,允许用户连接。 |
mechanism | 数组 | 该字段指定SCRAM机制。有效的SCRAM值是SCRAM-SHA-1和SCRAM-SHA-256。 |
示例:
{
"_id" : "products.appClient01",
"userId" : UUID("c5d88855-3f1e-46cb-9c8b-269bef957986"), // Starting in MongoDB 4.0.9
"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"
]
}
以下是更新用户命令,完全替换用户的customData和roles数据:
use products
db.runCommand( {
updateUser : "appClient01",
customData : { employeeId : "0x3039" },
roles : [ { role : "read", db : "assets" } ]
} )