2018-03-27

作者: mo_陌上花开 | 来源:发表于2018-03-27 22:27 被阅读0次

MongoDB的账户与权限管理

默认的MongoDB是没有账户权限管理的,也就是说,不需要密码即可登陆,即可拥有读写的权限(当然,重启服务还是需要在本机执行),这个对于自己做实验室足够使用的,但是对于开放数据给他人使用时很不安全的

1、首先切换到admin数据库
use admin
2、随后我们新建两个用户,一个具有读写权限,一个只有读取的权限
 1 //新建读账号
 2 db.createUser( { 
 3     "user" : "rouser",//账号名称
 4     "pwd": "rouserpwd",//密码
 5     "customData" : {
 6         //注释
 7         user_abs:"read-only user for data analysis" 
 8     },
 9     "roles" : [ 
10         {
11             role: "readAnyDatabase",//读所有数据库
12             db: "admin"
13         } 
14     ]
15     },{ 
16         w: "majority" , 
17         wtimeout: 5000 
18     } 
19 )
20 //新建读写账号
21 db.createUser( { 
22     "user" : "rwuser",//账号名称
23     "pwd": "rwuser_pwd",//密码
24     "customData" : { //注释
25         user_abs:"read-write user for data extractor" 
26     },
27     "roles" : [ 
28         {
29             role: "readWriteAnyDatabase",//读写所有数据库
30             db: "admin"
31         } 
32     ]
33     },{ 
34         w: "majority" , 
35         wtimeout: 5000 
36     } 
37 )

3、创建完成以后,首先检查一下是不是新建好了

1 db.getCollection("system.users").find({})
2 
3 //输出:
4 //实际输入:db.getCollection("system.users").find({},{"credentials":0})
5 { "_id" : "admin.super_user", "user" : "super_user", "db" : "admin", "roles" : [ { "role" : "__system", "db" : "admin" } ] }
6 { "_id" : "admin.rouser", "user" : "rouser", "db" : "admin", "customData" : { "user_abs" : "read-only user for data analysis" }, "roles" : [ { "role" : "readAnyDatabase", "db" : "admin" } ] }
7 { "_id" : "admin.rwuser", "user" : "rwuser", "db" : "admin", "customData" : { "user_abs" : "read-write user for data extractor" }, "roles" : [ { "role" : "readWriteAnyDatabase", "db" : "admin" } ] }

看到输出了所有的账户信息,就OK了,下一步就是重新启动服务,在重启服务之前,需要在config文件中设置auth = true,这样才会需要登录,否则什么都没变
以下是我的Config文件,最后一行是重新安装服务的Command,如果没有安装过,使用--install参数即可:

1 #存放数据目录
 2 dbpath=F:\FeaturesData\data
 3 #日志文件
 4 logpath=F:\FeaturesData\mongo.log
 5 #Cache Size
 6 wiredTigerCacheSizeGB=1
 7 
 8 auth = true
 9 logappend = true
10 directoryperdb = true
11 
12 #执行
13 # mongod --config "F:\FeaturesData\mongo.config" --serviceName "MongoDB" --reinstal

这样启动以后Mongo就有权限了,这个时候的登陆要使用账号密码:
mongo" -u super_user -p super_user_paasswd --authenticationDatabase admin 127.0.0.1/test
其中127.0.0.1/test是IP/数据库名称以连接默认数据库。
这个时候你可以试一下使用只读账号删库或者删集合,会出现drop failed: MongoError: not authorized on test to execute command
意味着你没有权限删除,这个时候不要说删除,插入操作也是不能做的

转载博客

相关文章

网友评论

    本文标题:2018-03-27

    本文链接:https://www.haomeiwen.com/subject/avkecftx.html