1.创建超级账号
- > use admin ;
- > db . createUser ( { user : "admin" , pwd : "123456" , roles : [ { role : "root" , db : "admin" } ] } )
- Successfully added user : {
- "user" : "admin" ,
- "roles" : [
- {
- "role" : "root" ,
- "db" : "admin"
- }
- ]
- }
user:用户名
pwd:密码
roles :指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。 role里的角色 可以选:
- 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数据库中可用。超级账号,超级权限
2.开启权限认证
- 配置文件添加
- [ dbaadmin@ ip - 172 - 31 - 36 - 77 ~ ] $ more /usr/ local / mongodb/conf/mongod . conf
- auth = true
3.重启后认证超级账号
- [ root@iZ2ze66bhrbxkc31nljgjnZ mongodb ] # /usr/ local / mongodb/bin/mongo
- MongoDB shell version : 3 . . 6
- connecting to : test
- > show dbs ; --没权限查看
- 2018 - 05 - 07T14 : 29 : 25 . 847 + 0800 E QUERY Error : listDatabases failed : {
- "ok" : 0 ,
- "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }" ,
- "code" : 13
- }
- at Error ( < anonymous > )
- at Mongo . getDBs ( src/mongo/shell/mongo . js : 47 : 15 )
- at shellHelper . show ( src/mongo/shell/utils . js : 630 : 33 )
- at shellHelper ( src/mongo/shell/utils . js : 524 : 36 )
- at ( shellhelp2 ) : 1 : 1 at src/mongo/shell/mongo . js : 47
- > use admin ;
- switched to db admin
- > db . auth ( 'admin' , '123456' ) ; -admin下认证超级账号, 数据库帐号是跟着数据库来走的,哪里创建哪里认证。
- 1
- > show dbs ;
- admin 0 . 078GB
- local 0 . 078GB
- rundb 0 . 078GB
- rundb2 0 . 078GB
4.添加普通账号
- > use rundb2 ;
- switched to db rundb2
- > db . createUser ( { user : 'runuser2' , pwd : '123456' , roles : [ { role : "dbOwner" , db : " rundb2 " } ] } )
- Successfully added user : {
- "user" : "runuser2" ,
- "roles" : [
- {
- "role" : "dbOwner" ,
- "db" : "rundb2"
- }
- ]
- }
- > show users ; <1pre style="margin-top:0px;margin-bottom:0px;white-space:pre-wrap;text-align:justify;font-family:;" "=""> #查看当前库下的用户
- {
- "_id" : "rundb2.runuser" ,
- "user" : "runuser" ,
- "db" : "rundb2" ,
- "roles" : [
- {
- "role" : "readWrite" ,
- "db" : "rundb2"
- }
- ]
- }
- {
- "_id" : "rundb2.runuser2" ,
- "user" : "runuser2" ,
- "db" : "rundb2" ,
- "roles" : [
- {
- "role" : "dbOwner" ,
- "db" : "rundb2"
- }
- ]
- }
5.普通账号认证
- 认证方式一
- [ root@iZ2ze66bhrbxkc31nljgjnZ mongodb ] # /usr/ local / mongodb/bin/mongo - u runuser - p 123456 rundb2
- MongoDB shell version : 3 . . 6
- connecting to : rundb2
- > show collections ;
- system . indexes
- testcoll
- testcoll2
认证方式二
- [ root@iZ2ze66bhrbxkc31nljgjnZ mongodb ] # /usr/ local / mongodb/bin/mongo
- MongoDB shell version : 3 . . 6
- connecting to : test
- > use rundb2 ;
- switched to db rundb2
- > show dbs ;
- 2018 - 05 - 07T14 : 36 : 46 . 809 + 0800 E QUERY Error : listDatabases failed : {
- "ok" : 0 ,
- "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }" ,
- "code" : 13
- }
- at Error ( < anonymous > )
- at Mongo . getDBs ( src/mongo/shell/mongo . js : 47 : 15 )
- at shellHelper . show ( src/mongo/shell/utils . js : 630 : 33 )
- at shellHelper ( src/mongo/shell/utils . js : 524 : 36 )
- at ( shellhelp2 ) : 1 : 1 at src/mongo/shell/mongo . js : 47
-
- > db . auth ( 'runuser2' , '123456' )
- 1
- > show collections ;
- system . indexes
- testcoll
- testcoll2
5账号管理
- 修改密码
- MongoDB 修改帐号的密码有两种方式: 1 . 使用 changeUserPassword 方法 2 . 使用 updateUser 方法里面的 pwd 参数
- / / 验证帐号密码
- > db . auth ( "biadmin" , "biadmin" )
- 1
- //修改帐号密码
- > db . changeUserPassword ( "biadmin" , "123" )
- //使用原密码验证失败返回0
- > db . auth ( "biadmin" , "biadmin" )
- Error : Authentication failed .
- 0
- //使用修改后密码验证成功返回1
- > db . auth ( "biadmin" , "123" )
- 1
- //使用updateUser 修改密码
- > db . updateUser (
- "biadmin" ,
- {pwd : "biadmin" } )
- //验证密码成功返回1
- > db . auth ( "biadmin" , "biadmin" )
- 1
-
- 删除帐号
- MongoDB 删除帐号有两种方式:
- 1 . 使用 dropUser ( "username" ) 删除当前数据库下指定帐号
- 2 . 使用 dropAllUsers ( ) 删除数据库下所有帐号
- / / 已经创建两个测试帐号
- > db . getUser ( "test1" )
- {
- "_id" : "bitest.test1" ,
- "user" : "test1" ,
- "db" : "bitest" ,
- "roles" : [
- {
- "role" : "dbAdmin" ,
- "db" : "bitest"
- }
- ]
- }
- > db . getUser ( "test2" )
- {
- "_id" : "bitest.test2" ,
- "user" : "test2" ,
- "db" : "bitest" ,
- "roles" : [
- {
- "role" : "dbAdmin" ,
- "db" : "bitest"
- }
- ]
- }
- //使用dropUser删除帐号test1成功返回true
- > db . dropUser ( "test1" )
- true
- //查询帐号test1已不存在
- > db . getUser ( "test1" )
- null
- //使用dropAllUsers删除所有帐号
- > db . dropAllUsers ( )
- 2
- //查询帐号 test2,biadmin 都已不存在
- > db . getUser ( "test2" )
- null
- > db . getUser ( "biadmin" )
- null
- //查询数据库下所有帐号返回空数组
- > db . getUsers ( )
- [ ]
-
6 更改用户信息
更改role,密码都行 db.updateUser( "test",{ roles:[ { role: "readWrite", db: "welike_mongo" } ], pwd:"123456" } )
更多的操作查看参照文档:
https://www.cnblogs.com/shiyiwen/p/5552750.html
https://www.cnblogs.com/damingge/p/6507605.html
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-2155305/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29096438/viewspace-2155305/