MongoDB 用户管理命令

Mongo DB 用户管理命令包含与用户相关的命令。我们可以使用以下用户管理命令创建、删除和更新用户。

一、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@yiidian",  
       pwd: passwordPrompt(),  
       customData: { empId: 101 },  
       roles: [  
                { role: "clusterAdmin", db: "admin" },  
                { role: "readAnyDatabase", db: "admin" },  
                "readWrite"  
              ],  
       writeConcern: { w: "majority" , wtimeout: 5000 }  
} )  

上面的示例在学生数据库上创建了一个用户admin@yiidian。该命令为admin@yiidian提供了 admin 数据库上的 clusterAdmin 和 readAnyDatabase 角色以及学生数据库上的 readwrite 角色。

二、MongoDB dropUser 命令

MongoDB dropUser 命令从我们运行命令的数据库中删除用户。

语法:

{  
  dropUser: "<user>",  
  writeConcern: { <write concern> }  
}  

dropUser 命令字段:

字段名 类型 描述
dropUser string dropUser 字段包含您要删除的用户的名称。
writeConcern document 此字段包含删除操作的写入关注级别。

示例:

use products  
db.runCommand( {  
   dropUser: " admin@yiidian",  
   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字段:

字段名 类型 描述
updateUser string 它包含我们需要更新的用户名。
pwd string 它包含用户的密码,或者您可以使用密码提示来提示输入密码。
customData document 此字段包含管理员希望在特定用户中更新的数据。
roles array 此字段向用户授予角色。
digestPassword boolean 它指示服务器或客户端是否会消化密码。
writeConcern document 此字段包含创建操作的写入关注点。
authentication
Restrictions
array 它对创建的用户强制执行身份验证规则。它提供了允许用户连接的 IP 地址和 CIDR 范围的列表。
mechanism array 该字段指定 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 和角色数据:

use products  
db.runCommand( {  
   updateUser : "appClient01",  
   customData : { employeeId : "0x3039" },  
   roles : [ { role : "read", db : "assets" } ]  
} )  

 

热门文章

优秀文章