-
说明
- 默认情况下,mongod也是没有管理员账户,除非你在admin数据库中使用db.createUser()命令添加了管理员帐号,且使用–auth参数启动mongod,否则在数据库中任何人都可以无需认证执行所有命令
-
创建账号:
- db.createUser({user:"testAdmin",pwd:"123456wangchangc",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
- 账号角色
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
- 内部角色:__system
- 常用账号查看命令
- 查看用户自定义角色权限:db.runCommand({rolesInfo:1})
- 查询所有角色权限: db.runCommand({rolesInfo:1, showBuiltinRoles:true})
- 查看某个角色的权限: db.runCommand({rolesInfo:"<rolename>"})
- 查询其他数据库中指定的角色权限:db.runCommand({rolesInfo:{role:<roelename>",db:"<dbname>"}})
-
重启生效:
- 创建账号后,需要重启进行生效:关闭服务kill, 启动服务的前打开auth:true
-
登录并认证
- db.auth("testAdmin2","123456wangchangc")
- mongo -utestAdmin2 -p'123456wangchangc' --port 27017
-
删除用户:
- db.dropUser("<username>")
-
修改密码:
- db.changeUserPassword("<UserName>","<newPassword>")
-
验证密码/切换账户:
- db.auth("<userName>","<password>")
-
副本集,副本间通信
- 需要通过相同的KEY文件通信
- 生成KEY文件: openssl rand -base64 90 -out ./mongo.keyfile
- 修改权限 chmod 400 ./mongo.keyfile,并发送到所有副本节点的mongo目录下
- 更新conf: keyFile: /export/data/mongo/mongo.keyfile
- 重启所有副本实例生效
MongoDB账户管理
最新推荐文章于 2024-07-12 09:16:31 发布