用户管理

身份验证:
方法一:
mongo --port 27017  --authenticationDatabase "admin" -u "myUserAdmin" -p

方法二:
mongo --port 27017

use admin;
db.auth('root','mima123456')

或者:
use admin;
db.auth('root', passwordPrompt())


查看某个库中的用户: 
use test_db1;
show users;  # 等价于: db.getUsers()


查看所有用户:
use admin;  
show users;


查看所有用户:
use admin;
db.system.users.find();


查看指定用户:
db.getUser("root");


查看指定用户证书、权限、限制条件:
db.getUser("root", {
   showCredentials: true,
   showPrivileges: true,
   showAuthenticationRestrictions: true
} )


创建用户语法:
{
  user: "<name>",   -- 用户名
  pwd: passwordPrompt(),    -- 提示输入密码,也可以直接写密码
  customData: { <any information> },  -- 可选,可用于存储与此特定用户关联的任何数据。 例如,这可以是用户的全名或员工ID。
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ],     -- 授予用户的角色。 可以指定一个空数组[]来创建没有角色的用户
  authenticationRestrictions: [
     {
       clientSource: ["<IP>" | "<CIDR range>", ...],
       serverAddress: ["<IP>" | "<CIDR range>", ...]
     },
     ...
  ],  -- 可选,服务器对创建的用户强制执行的身份验证限制,指定允许用户连接到服务器或服务器可以接受用户的IP地址和CIDR(无类别域间路由)范围的列表
  mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ],  --可选,指定特定的SCRAM机制或用于创建SCRAM用户凭据的机制
  passwordDigestor: "<server|client>"  --可选,指服务器还是客户端提取密码。
}


Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root  
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
    
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限


创建用户范例1:
use admin;
db.createUser({user:"dba",pwd:"mima123456",roles:[{role:"root",db:"admin"}]})


创建用户范例2:
use admin;
db.createUser(
  {
    user: "dba",
    pwd:  passwordPrompt(),
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)


创建用户范例3:
use admin;
db.createUser(
{
user:'dba',
pwd:passwordPrompt(),
roles:[{role:'root',db:'admin'}],
customData:{name:'运维账号'},
authenticationRestrictions: [ {
        clientSource: ["10.21.53.213"],
        serverAddress: ["10.21.53.213"]
     } ]
}
)


修改用户密码
db.changeUserPassword('user','pwd')


授权role给指定用户:
db.grantRolesToUser('user123',['readWrite',{role:'read',db:'test'}]) 


移除指定用户的role:
db.revokeRolesFromUser('user123',[{role:'read',db:'test'},'readWrite'])


删除用户:
db.dropUser('accountAdmin01')


删除当前库所有用户:
db.dropAllUsers({w: "majority", wtimeout: 5000})


更新指定用户语法:
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> }
)


更新指定用户范例:
db.updateUser(
'user123',
{
pwd:passwordPrompt(),
roles:['read'],
customData:{name:'运维账号'},
authenticationRestrictions: [ {
        clientSource: ["192.168.163.134"],
        serverAddress: ["192.168.163.134"]
     } ]
}
)

 

posted @ 2025-06-17 01:06  屠魔的少年  阅读(22)  评论(0)    收藏  举报