转子:http://www.2cto.com/database/201511/448493.html
删除用户:
db.system.users.remove({user:"java1"});
mongoDB数据库默认情况下是没有做权限控制的,只要能够连接所开放的端口就能进行访问,而且拥有root级别的权限;对于生产环境而言是极不安全的,所以需要建立用户,进行授权控制。
单机环境下的用户授权模块配置:
MongoDB的社区版本中有两个模块可以控制用户的访问:
--auth: 在mongod启动项中加入--auth,mongodb启动后,就可以完成授权模块的启用);
PS:虽然auth模块启用后本机还能否登陆到数据库,但是不具备增删改查的权限了,所以启动auth模块之前就应该创建一个超级用户
--keyFile <file>: 主要用于分片集群与副本集相互之间的授权使用,在单机情况下只要用到auth,如果是在集群(分片+副本集)环境下,就必须要用到该参数;
security.authorization: 在MongoDB 2.6版本开始,mongod/mongos的启动配置文件增加了YAML格式的写法,功能更auth是一样的,后面的操作中,都是采用该格式
security.keyFile: 格式与security.authorization相同,功能与--keyFile相同。
首先验证下非配置认证模块的访问:
1
2
3
4
5
6
7
8
|
[root @fo169 bin]# ./mongo
MongoDB shell version: 3.0 . 7
connecting to: test Server has startup warnings: 2015 - 10 -29T15: 12 : 14.257 + 0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2015 - 10 -29T15: 12 : 14.257 + 0800 I CONTROL [initandlisten]
> show dbs local 0 .000GB
|
在没有配置的情况下,登录到数据库后,可以做任何操作。
配置认证模块及重启服务:
编写了一个启动配置文件:mongodb.conf(文件中标红部分就为auth的授权模块)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[root @fo169 bin]# cat mongodb.conf
systemLog: destination: file
path: "/data/auth/log/mongod.log" logAppend: true
storage: journal:
enabled: true
dbPath: "/data/auth/db" directoryPerDB: true engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 4 directoryForIndexes: true journalCompressor: zlib
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
net: port: 27017
processManagement: fork: true
security: authorization: enabled
|
创建授权用户(超级管理员):
MongoDB在V3.0版本之后内置了root 角色,也就是结合了readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin4个角色权限,类似于ORACLE的sysdba角色,但是MongoDB的超级管理员用户名称是可以随便定义的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[root @fo169 bin]# ./mongo
MongoDB shell version: 3.0 . 7
connecting to: test Server has startup warnings: 2015 - 10 -30T16: 24 : 36.127 + 0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2015 - 10 -30T16: 24 : 36.127 + 0800 I CONTROL [initandlisten]
> use admin switched to db admin > db.createUser( ... { ... user: "ljaiadmin" ,
... pwd: "123456" ,
... roles: [ { role: "root" , db: "admin" } ]
... } ... ) Successfully added user: { "user" : "ljaiadmin" ,
"roles" : [
{
"role" : "root" ,
"db" : "admin"
}
]
} |
这样就创建好一个ljaiadmin的超级管理员用户,创建全局用户或者超级用户,需要在MongoDB的admin数据库中创建(在其他库也可以创建,但是没有该角色功能),重启完mongod进程后,接下来做一下权限的验证:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
[root @fo169 bin]# ./mongo
MongoDB shell version: 3.0 . 7
connecting to: test > show dbs (注:此时查看已提示没有授权执行listDatabases命令了) 2015 - 10 -30T16: 41 : 31.131 + 0800 E QUERY Error: listDatabases failed:{
"ok" : 0 ,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }" ,
"code" : 13
} at Error (<anonymous>)
at Mongo.getDBs (src/mongo/shell/mongo.js: 47 : 15 )
at shellHelper.show (src/mongo/shell/utils.js: 630 : 33 )
at shellHelper (src/mongo/shell/utils.js: 524 : 36 )
at (shellhelp2): 1 : 1 at src/mongo/shell/mongo.js: 47
> use admin switched to db admin > db.auth( 'ljaiadmin' , '123456' ) (注:切换到admin用户进行授权验证)
1 > show dbs (注:验证完成后,就可以读写等操作) admin 0 .000GB
local 0 .000GB
test100 0 .000GB
test2 0 .000GB
> use test2 switched to db test2 > show tables test test2 > db.test2.find() { "_id" : ObjectId( "5632cf116207909a76446af7" ), "name" : "1" }
> db.test2.drop() true > db.dropDatabase() { "dropped" : "test2" , "ok" : 1 }
> show dbs admin 0 .000GB
local 0 .000GB
test100 0 .000GB
> use test100 switched to db test100 > db.test111.insert({ "test" : "test" })
WriteResult({ "nInserted" : 1 })
> db.test111.find() { "_id" : ObjectId( "56332db373f771b3d95638bb" ), "test" : "test" }
> use admin switched to db admin > show users { "_id" : "admin.ljaiadmin" ,
"user" : "ljaiadmin" ,
"db" : "admin" ,
"roles" : [
{
"role" : "root" ,
"db" : "admin"
}
]
} > |
创建普通用户
用可以对test123数据库读写的rwtest123用户为例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
> use test123 switched to db test123 > db.createUser( ... { ... user: "rwtest123" ,
... pwd: "123456" ,
... roles: [ { role: "readWrite" , db: "test123" } ]
... } ... ) Successfully added user: { "user" : "rwtest123" ,
"roles" : [
{
"role" : "readWrite" ,
"db" : "test123"
}
]
} #所建的rwtest123用户可以在test123数据库中进行增删改查操作,但是其他操作就不行了 >db.auth( 'rwtest123' , '123456' )
switched to db test123 > db.test123.insert({ "test" : "test" })
WriteResult({ "nInserted" : 1 })
> db.test123.find() { "_id" : ObjectId( "563332ebc8a59ae4fe96bbf5" ), "test" : "test" }
> db.test123.drop() true > use test100 switched to db test100 > db.test100.find() Error: error: { "$err" : "not authorized for query on test100.test100" , "code" : 13 }
> |
相关推荐
SQL Server 登陆权限操作是指在 SQL Server 中设置用户登录名和权限的操作,包括服务器角色权限和数据库权限。本文将详细介绍如何设置 Test 用户的权限,包括服务器角色的权限 dbcreate、能操作的数据库 Accp50 及...
华为路由器申请ESDP网站权限操作指导 华为路由器申请ESDP网站权限操作指导是华为技术有限公司提供的一份操作手册,旨在指导华为工程师申请ESDP网站权限的步骤。该指导手册详细介绍了申请ESDP网站权限的前提条件、...
"基于C#.Net的带有权限操作的网站后台源码"是一个开发项目,它使用了C#编程语言以及.NET框架进行构建。这里的“权限操作”指的是该后台系统具备用户角色和权限管理的功能,能够控制不同用户对网站功能的访问权限。 ...
权限操作系统是一种特殊的计算机操作系统,它的核心设计目标是管理和控制用户对系统资源的访问,确保数据安全性和系统稳定性。在这样的系统中,每个用户、进程或应用程序都有特定的权限,只能执行被授权的操作。这种...
AndroidAcp * Acp 为 Android check permission 缩写,此库简化Android 6.0 系统复杂的权限操作而编写。 特点 * 支持批量权限申请,不需要重写 onRequestPermissionsResult 方法,Activity 与 Fragment 中用法一致,...
"角色和用户的登录权限操作"这一主题涵盖了几个重要的知识点,包括页面操作控制、用户与角色的登录流程,以及角色与功能的关联。 首先,让我们深入探讨页面添、删、查、改功能的控制。这是权限管理的基础,确保用户...
《ASP.NET权限操作的网站后台源码解析》 在当今的互联网环境中,权限管理是构建一个安全、高效网站后台不可或缺的部分。本篇文章将深入探讨基于C#.Net的“aspnet权限操作的网站后台源码”,解析其核心概念、设计...
MySQL JDBC 权限操作,授权、回收权限
嵌_样例工程_权限操作.zip昆仑通态触摸屏案例编程源码资料下载嵌_样例工程_权限操作.zip昆仑通态触摸屏案例编程源码资料下载嵌_样例工程_权限操作.zip昆仑通态触摸屏案例编程源码资料下载嵌_样例工程_权限操作.zip...
下面将详细介绍ExtJS 4.1中集成的权限操作流程和页面。 一、权限体系架构 在ExtJS 4.1中,权限管理通常基于角色(Role)和资源(Resource)的概念。每个用户被分配到一个或多个角色,每个角色拥有对特定资源的访问...
jsTree 权限操作 通过菜单加载权限。网上收集了1个星期,才整理出来的 通过ajax调取后台。后台数据表中的.id,parentId, text 三个必备参数。id,parentid 管理后,会自动生成树。使用了abp框架 可以提取你想要的部分
Linux用户与文件权限操作实例学习教案.pptx
担保项目审批权限操作流程.doc
用户认证与权限操作手册.doc
1669215135014_用户权限操作练习-3.sql
Linux用户与文件权限操作实例PPT课件.pptx
接着,资源访问控制是权限操作的核心。后台系统中的资源可能包括数据库表、API接口、文件等,每个资源都可以设置访问级别,如只读、读写、完全控制等。管理员可以通过设置规则,限制哪些角色或用户可以访问特定资源...
Cassandra 权限操作,grant/revoke
计算机前端-实战.目视频2-07.展示权限操作相关视图.wmv