0
点赞
收藏
分享

微信扫一扫

【MongoDb探究】09-用户管理


如果我们是数据库的管理者(DBA),除了了解数据库的基本操作外,我们还需要了解


数据库的其它知识,比如:复制级/数据分片/添加用户/导入导出等。



我们接下来首先来了解mongodb的用户管理。



我们一开始学习的时候,登录mongodb是这样的:


【MongoDb探究】09-用户管理_db.auth


没有输入用户名和密码,这是因为mongodb一开始没有为我们


设置用户名和密码。



如果这台服务器上线了,需要用户名和密码来保障它的安全,我们应该如何


操作呢?这时候就需要mongodb的用户管理。



注意:


A)在mongodb中,有一个admin数据库,牵涉到服务器配置层面的操作,需要先


切换到admin数据,即use admin(相当于进入超级用户管理模式)


【MongoDb探究】09-用户管理_db.removeUser_02



B)mongo的用户是以数据库未单位来建立的,每个数据库都有自己的管理员。



C)我们在设置用户时,需要现在admin数据库下建立管理员,这个管理员登录


后相当于超级管理员。




1: 添加用户


3.0之前命令:db.addUser();


3.0之后命令:db.createUser(


    {


        user:'xxx',


        pwd:'xxx',


        roles:["xxx","xxx"]


    }


)


3.0之前简单参数: db.addUser(用户名,密码,是否只读)


3.0之后简单参数: db.createUser({用户名:值1,密码:值2,角色:[读/写,角色名]})



例:


3.0之前:


【MongoDb探究】09-用户管理_db.auth_03


3.0之后:


【MongoDb探究】09-用户管理_db.createUser_04


其中dbAdmin是一种角色,其它角色见下表:


具体角色:



Read:允许用户读取指定数据库


readWrite:允许用户读写指定数据库


dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile


userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户


clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。


readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限


readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限


userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限


dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。


root:只在admin数据库中可用。超级账号,超级权限



重启服务:


【MongoDb探究】09-用户管理_db.createUser_05


重新进入服务之后,就需要登录了:


【MongoDb探究】09-用户管理_mongodb_06



注意: 添加用户后,我们再次退出并登录,发现依然可以直接读数据库?


原因: mongodb服务器启动时, 默认不是需要认证的.


要让用户生效, 需要启动服务器时,就指定 --auth 选项.


这样, 操作时,就需要认证了.



在admin库中加的管理员,在其它库中都有权限,而在其他库添加


的用户的权限是不能跨库的。



2: 认证(用户登录)


命令:db.auth();


简单参数:db.auth(用户名,密码);



例:


【MongoDb探究】09-用户管理_db.removeUser_07



3: 修改用户密码


命令:db.changeUserPassword();


简单参数:db.changeUserPassword(用户名, 新密码);



例:

【MongoDb探究】09-用户管理_db.addUser_08


3:删除用户


命令:db.removeUser();


简单参数:db.removeUser(用户名);



例:


【MongoDb探究】09-用户管理_db.createUser_09

举报

相关推荐

0 条评论