当前位置:Gxlcms > mysql > mongodb管理SecurityandAuthentication

mongodb管理SecurityandAuthentication

时间:2021-07-01 10:21:17 帮助过:5人阅读

mongodb管理Security and Authentication mongdb自己也提供了验证机制,如果不验证是无法访问数据库对象,一个数据可以有多个用户,用户的权限也可以各不相同,下面具体介绍一下。 use admin ----登录到超级管理员 db.addUser(root, abcd); { _id : ObjectId

mongodb管理Security and Authentication

mongdb自己也提供了验证机制,如果不验证是无法访问数据库对象,一个数据可以有多个用户,用户的权限也可以各不相同,下面具体介绍一下。

> use admin ----登录到超级管理员

>db.addUser("root", "abcd");

{

"_id" : ObjectId("4eaf58af769d879418d93191"),

"user" : "root",

"readOnly" : false,

"pwd" : "1a0f1c3c3aa1d592f490a2addc559383"

}

创建了一个超级用户,这个用户可以访问任何数据库,权限最大

> use test

switched to db test 切换到test数据库

> db.addUser("test_user", "efgh");

{

"user" : "test_user",

"readOnly" : false,

"pwd" : "6076b96fc3fe6002c810268702646eec"

}

> db.addUser("read_only", "ijkl", true);

{

"user" : "read_only",

"readOnly" : true,

"pwd" : "f497e180c9dc0655292fee5893c162f1"

}

以上创建两个用户,test_user和read_only,不同的是,read_only用户只有只读权限

> use test

switched to db test

> db.test.find();

error: { "$err" : "unauthorized for db [test] lock type: -1 " }

> db.auth("read_only", "ijkl");

1

> db.test.find();

{ "_id" : ObjectId("4bb007f53e8424663ea6848a"), "x" : 1 }

> db.test.insert({"x" : 2});

unauthorized

> db.auth("test_user", "efgh");

1

> db.test.insert({"x": 2});

> db.test.find();

{ "_id" : ObjectId("4bb007f53e8424663ea6848a"), "x" : 1 }

{ "_id" : ObjectId("4bb0088cbe17157d7b9cac07"), "x" : 2 }

以上例子可以看到没有验证用户登录,对数据库读写操作均不能,read_only用户只能查询,不能插入,但是test_user用户验证登录后就可以插入了。

如果这时,show dbs,还是报错,因为test_user 不是admin用户,所以没有权限。

> use admin

switched to db admin

> db.auth("root", "abcd");

1

> show dbs

admin

local

test

验证了超级用户就可以做相关操作

创建的这些用户都存在创建时数据库下面一个叫system.users的集合里面,如果要移除一个user,例如移除test_user

> db.auth("test_user", "efgh");

1

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

> db.auth("test_user", "efgh");

0

启用验证登录:如果是配置文件启动server端,里面可以加入auth = true ,如果是跟参数启动mongod 后面记得跟--auth。

人气教程排行