第一、首先,不使用 –auth 参数,启动 mongoDB:
mongod -f /etc/mongodb.conf
此时你 show dbs 会看到只有一个local数据库,那个所谓的admin是不存在的。
mongoDB 没有用户root,只有能管理用户的用户 userAdminAnyDatabase。
此时打开mongo客户端
/usr/local/mongodb/bin/mongo第二、添加管理用户
use admin
db.createUser(
{
user: “admin”,
pwd: “123456”,
roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
}
)
有很多文章记录的是使用 db.addUser(…) 方法,这个方法是旧版的,3.0中已经不存在,详见:http://docs.mongodb.org/manual/reference/method/js-user-management。
原文章:http://ibruce.info/2015/03/03/mongodb3-auth/切换到admin下,查看刚才创建的用户:
show users
或
db.system.users.find()怎么关闭 mongoDB?千万不要 kill -9 pid,可以 kill -2 pid 或 db.shutdownServer()
开启认证
–关闭之前打开的服务,重庆启用认证
mongod -f /etc/mongodb.conf授权:
–再次登陆
use admin
db.auth(‘admin’,’123456’)#认证,返回1表示成功
或
/usr/local/mongodb/bin/mongo -u admin -p 123456 –authenticationDatabase admin和其他所有数据库一样,权限的管理都差不多一样。mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。mongodb默认不启用授权认证,只要能连接到该服务器,就可连接到mongod。若要启用安全认证,需要更改配置文件参数auth。
第三、创建用户,用户都跟着库走,创建的用户都是
1、先访问到admin数据库(创建角色)
use admin
db.auth(“admin”,”admin”)切换到 chat,在数据库 chat 中创建角色
roles: 创建角色”testRole”在数据库 “chat” 中
privileges: 该角色可查看”find”数据库”mydb”的所有集合
db.dropRole(“testRole”) 删除操作
use chat
db.createRole({
role: “testRole”,
privileges: [{resource: { db: “chat”, collection: “” }, actions: [ “find” ] }],
roles: []
})
在admin数据库生成集合system.roles。查看角色。
use admin
switched to db admin
db.system.roles.find();
{ “_id” : “mydb.testRole”, “role” : “testRole”, “db” : “mydb”, “privileges” : [ { “resource” : { “db” : “mydb”, “collection” : “” }, “actions” : [ “find” ] } ], “roles” : [ ] }
回到mydb,在数据库mydb中创建用户并授予角色”testRole”
db.dropUser(“userkk”)
use mydb
db.createUser(
{
user: “userkk”,
pwd: “userkk”,
roles: [ { role: “testRole”, db: “mydb” } ]
}
)
退出mongodb,重新登录进行操作。发现只能使用find
给角色 “testRole” 添加3个 “Privileges”权限: “update”, “insert”, “remove”。再重新操作。
use admin
db.auth(“admin”,”admin”)
use mydb
添加Privileges给角色
db.grantPrivilegesToRole("testRole",
[{ resource: { db: "mydb", collection: "" },actions: [ "update", "insert", "remove" ]}
])
exit #退出mongodb重新登录
use mydb
db.auth("userkk","userkk")
增删数据可以操作了!~
db.tab.insert({"id":1000})
db.tab.find({"id":1000})
db.tab.remove({"id":1000})
此时admin的角色记录为:
> db.system.roles.find();
{ "_id" : "mydb.testRole", "role" : "testRole", "db" : "mydb", "privileges" : [ { "resource" : { "db" : "mydb", "collection" : "" }, "actions" : [ "find", "insert", "remove", "update" ] } ], "roles" : [ ] }
更改角色 roles,把roles值全部更新。同样Privileges也可以更新替换!~
use admin
db.auth("admin","admin")
use mydb
db.updateRole("testRole",{ roles:[{ role: "readWrite",db: "mydb"}]},{ w:"majority" })
db.auth("userkk","userkk")
show dbs
主要参考文章:http://blog.youkuaiyun.com/kk185800961/article/details/45619863
http://ibruce.info/2015/03/03/mongodb3-auth/
本文详细介绍了如何在MongoDB 3.x版本中设置认证,包括创建管理员用户、配置安全认证、创建普通用户及角色,并演示了如何通过不同权限的操作验证权限配置的有效性。
722

被折叠的 条评论
为什么被折叠?



