MongoDB用户认证及权限的设置

MongoDB默认没有开启权限验证,对于我这种在广域网使用的人来说,真是不能忍。
于是按照以下操作开启了MongoDB的权限认证,可以实现单个数据库的认证,也可以添加全局用户。

针对当前数据库添加用户 权限是针对当前数据

use jieshi #进入jieshi数据库
switched to db jieshi
db.addUser(“hapame”,”1qa2ws3ed”) #增加用户为hapame,并设置密码为1qa2ws3ed
{
“user” : “hapame”,
“readOnly” : false, #默认是赋予用户读写权限
“pwd” : “6beed8c02c5d4452e0a4de2ac7ac886c”
}
db.auth(“hapame”,”1qa2ws3ed”) #添加用户认证

1

db.system.users.find() #查看已存在的用户
{ “_id” : ObjectId(“4cf42f9fa071f6232e83aff0”), “user” : “hapame”, “readOnly” : false, “pwd” : “6beed8c02c5d4452e0a4de2ac7ac886c” }
db.addUser(“admin”,”1qa2ws3ed”,true) #给数据库jieshi的用户admin赋予只读权限
{
“user” : “admin”,
“readOnly” : true,
“pwd” : “69b1f28eb1c0e10113d777d3ecb70d86”
}
删除用户jieshiyeskey,过程如下:

db.system.users.find()
{ “_id” : ObjectId(“4cf42f9fa071f6232e83aff0”), “user” : “hapame”, “readOnly” : false, “pwd” : “6beed8c02c5d4452e0a4de2ac7ac886c” }
{ “_id” : ObjectId(“4cf431b2a071f6232e83aff1”), “user” : “jieshiyeskey”, “readOnly” : false, “pwd” : “cacc18988ac24e26564d6acf7478aa8f” }
{ “_id” : ObjectId(“4cf431bba071f6232e83aff2”), “user” : “markgeng”, “readOnly” : false, “pwd” : “df8b1df1066e937b1cf65c54ea302750” }
{ “_id” : ObjectId(“4cf4320aa071f6232e83aff3”), “user” : “admin”, “readOnly” : true, “pwd” : “69b1f28eb1c0e10113d777d3ecb70d86” }
db.system.users.remove({user:”jieshiyeskey”}) #删除用户jieshiyeskey
db.system.users.find()
{ “_id” : ObjectId(“4cf42f9fa071f6232e83aff0”), “user” : “hapame”, “readOnly” : false, “pwd” : “6beed8c02c5d4452e0a4de2ac7ac886c” }
{ “_id” : ObjectId(“4cf431bba071f6232e83aff2”), “user” : “markgeng”, “readOnly” : false, “pwd” : “df8b1df1066e937b1cf65c54ea302750” }
{ “_id” : ObjectId(“4cf4320aa071f6232e83aff3”), “user” : “admin”, “readOnly” : true, “pwd” : “69b1f28eb1c0e10113d777d3ecb70d86” }
[root@jieshi ~]# mongo jieshi
MongoDB shell version: 1.6.3
connecting to: jieshi
show dbs
admin
jieshi
local
lsy
news
test

[root@jieshi ~]# mongo jieshi -u hapame -p 1qa2ws3ed
MongoDB shell version: 1.6.3
connecting to: jieshi

show dbs
admin
jieshi
local
lsy
news
test
设置好了,不用用户和密码或用户和密码都可以登入及查询。
现在打开认证并重启服务:

[root@jieshi ~]# cat /usr/local/etc/mongodb.conf
auth = true
[root@jieshi ~]# /usr/local/etc/rc.d/mongod restart
Stopping mongod.
Starting mongod.
forked process: 22993
all output going to: /var/db/mongodb/mongod.log
这时不用设置的用户登入,则就无法查询啦。

[root@jieshi ~]# mongo jieshi
MongoDB shell version: 1.6.3
connecting to: jieshi

db.system.users.find()
error: {
“$err” : “unauthorized db:jieshi lock type:-1 client:127.0.0.1”,
“code” : 10057
}
用设置好的用户登入,并能登入,如下:

[root@jieshi ~]# mongo jieshi -u hapame -p
MongoDB shell version: 1.6.3
Enter password:
connecting to: jieshi

db.system.users.find()
{ “_id” : ObjectId(“4cf42f9fa071f6232e83aff0”), “user” : “hapame”, “readOnly” : false, “pwd” : “6beed8c02c5d4452e0a4de2ac7ac886c” }
{ “_id” : ObjectId(“4cf431bba071f6232e83aff2”), “user” : “markgeng”, “readOnly” : false, “pwd” : “df8b1df1066e937b1cf65c54ea302750” }
{ “_id” : ObjectId(“4cf4320aa071f6232e83aff3”), “user” : “admin”, “readOnly” : true, “pwd” : “69b1f28eb1c0e10113d777d3ecb70d86” }