MongoDB用户及权限管理(二):用户管理-创新互联

一、创建管理员账号

为北辰等地区用户提供了全套网页设计制作服务,及北辰网站建设行业解决方案。主营业务为成都做网站、网站建设、北辰网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
  1. 下面开始创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)。

> use admin

switched to db admin

> db.createUser(

{

   user:  "dba",

   pwd:  "dba",

   roles:  [ { role: "userAdminAnyDatabase", db: "admin" } ]

}

)

2.编辑mongodb配置文件,开启验证模块

security:

   authorization: enabled

3.重启mongod.

4.再次登录mongodb

#mongo

> show dbs

2017-01-10T19:30:30.924+0800 E QUERY   [main] Error: listDatabases failed:{

        "ok" : 0,

        "errmsg" : "not authorized on admin to execute command  { listDatabases: 1.0 }",

        "code" : 13,

        "codeName" : "Unauthorized"

}

5.会报出如上错误,这是因为开启auth模块后,需要进行验证。如果需要使用刚才创建的管理员账户,则需要到admin库下进行验证,1表示验证成功。

>use admin

>db.auth('dba','dba')

1

6.验证成功,再次执行命令:

> show dbs

admin 0.000GB

local 0.000GB

即可执行成功。

二、创建普通用户账号

userAdminAnyDatabase的角色具有在任何数据库下创建用户的权限,下面用刚刚创建的dba用户创建普通用户。

1.创建只读账号

use db1

db.createUser(

 {

     user:  "test1",

     pwd:  "test1",

      roles: [ { role: "read", db: "db1" } ]

 }

)

2.创建读写账号

use db1

db.createUser(

 {

     user:  "test2",

     pwd:  "test2",

      roles: [ { role: "readWrite", db: "db1" } ]

 }

)

注意:只有在当前库下创建的用户才能在当前库下进行验证,如果在admin库下创建的其他库的用户则需要在admin下进行验证。

三、创建超级管理员用户

MongoDB在V3.0版本之后内置了root 角色,也就是结合了readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin4个角色权限,类似于ORACLE的sysdba角色,但是MongoDB的超级管理员用户名称是可以随便定义的。当然如此高权限的用户还是不建议使用。

db.createUser(

 {

     user:  "dbroot",

     pwd:  "dbroot",

      roles: [ { role: "root", db: "admin" } ]

 }

)

四、查看用户信息

db.getUser("test1")

> db.getUser("test1")

{

        "_id" : "admin.test1",

        "user" : "test1",

        "db" : "admin",

       "roles" : [

                {

                       "role" :  "clusterAdmin",

                       "db" :  "admin"

                }

       ]

}

五、修改用户信息

可修改用户的如下信息:

角色、密码、customData

db.updateUser( "test1",

{

    customData:{employeeID:"0x3039"},

        roles:[

             {role:"read",db:"admin"}

        ],

    pwd:"test1password"

}

)

六、修改用户密码

db.changeUserPassword("user","password")

七、删除用户

db.system.users.remove({user:"user1"});

db.dropUser("test1")

八、授权给用户

原有权限不变的情况下,授予readWrite,read admin的权限:

db.grantRolesToUser(

  "test1",

  [  "readWrite",

     {  role: "read", db: "admin" }

  ]

)

九、回收权限

回收test1用户的readWrite和read admin的权限。

db.revokeRolesFromUser(

    "test1",

   [ {  role: "read", db: "admin" },

         "readWrite"

        ]

)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:MongoDB用户及权限管理(二):用户管理-创新互联
浏览路径:http://myzitong.com/article/ppide.html