Fork me on GitHub

MongoDB3-x-权限配置

MongoDB3.x 安全权限访问控制,在添加用户上和3.0之前的版本有很大的区别,由于刚接触mongodb,可是在这方面走了许多弯路,这里说明下3.x的用户配置。

创建用户


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
> use admin
switched to db admin
> db.createUser(
... {
... user: "dba",
... pwd: "dba",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "dba",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}

  • user:用户名
  • pwd:密码
  • db : 数据库名字
  • roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。

role里的角色可以选:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Built-In Roles(内置角色):
1. 数据库用户角色:readreadWrite;
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数据库中可用。超级账号,超级权限

开启用户验证


新建mongodb.conf文件,并加入“auth=true”
从配置文件启动mongodb服务
1
./bin/mongod -f mongodb.conf

用户验证


1
2
3
4
5
6
7
[chenhao@localhost mongodb3.2.10]$ ./bin/mongo
MongoDB shell version: 3.2.10
connecting to: test
> use caideyang
switched to db caideyang
> db.auth('dba','dba')
1

查询用户


1
2
3
4
5
6
7
8
9
10
11
12
> show users
{
true"_id" : "test.dba",
true"user" : "dba",
true"db" : "test",
true"roles" : [
truetrue{
truetruetrue"role" : "userAdminAnyDatabase",
truetruetrue"db" : "admin"
truetrue}
true]
}

删除用户


1
> db.system.users.remove({user:"dba"})

备份数据库


1
2
3
4
5
6
7
mongodump --port=27020 -u admin -p admin --db=admin -o /root/backup
#参数说明
--port: mongodb的端口号
-u: 执行备份的用户
-p: 执行备份用户的密码
--db: 需要备份的数据库实例,例如:admin
-o: 备份的数据存放位置,例如:/root/backup

还原数据库


1
mongorestore --port=27020 -u admin -p admin --db=admin backup/test/



    本文标题   :   MongoDB3-x-权限配置

    文章作者   :   火柴

    发布时间   :   2017年1月10日 - 15时01分

    本文链接   :   http://www.chen-hao.com.cn/mongodb3-x-权限配置.html

    本文字数   :   本文一共有684字

    许可协议   :   Attribution-NonCommercial 4.0

    © 转载请保留以上信息,谢谢合作。