欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mongodb管理Security and Authentication

程序员文章站 2022-03-28 12:04:14
...

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。