mongodb的用户管理

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 MongoDB,通用型 2核4GB
简介:

简介:由于mongodb数据的用户管理是基于单个库的管理,他的管理策略大概如下

    如果验证了admin库的账户,那么所有的库都可以访问

    如果验证了非admin库的账户,那么此权限只能访问当前库下的数据

步骤建议:

    如果要对数据库进行账户设置,最好我们首先不要开启数据库验证,然后进入admin库,创建密码

退出添加 -auth  验证重启mongodb然后使用admin库的账户进行验证,如果通过那么进入其它库进行账户创建,完成后重新登录进行验证

验证如下:

    启动mongod

        mongod.exe --dbpath=E:\mongodb\db -auth  -auth  开启用户验证,如果启动没有添加此参数那么用户验证将失败

    首先进入admin库

        use admin

    查看当前数据的用户

        show collections 能返回两个表

    添加admin库的sa账户密码为sa

        db.addUser('sa','sa')

    ctrl+c 退出当前登录

    重新登录并进入admin库和test库检查是否能够查询当前表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
> use admin
switched  to  db admin
> show collections
Mon Oct 13 17:11:01 uncaught exception: error: {
         "$err"  "unauthorized db:admin lock type:-1 client:127.0.0.1" ,
         "code"  : 10057
}
> use test
switched  to  db admin
> show collections
Mon Oct 13 17:13:51 uncaught exception: error: {
         "$err"  "unauthorized db:test lock type:-1 client:127.0.0.1" ,
         "code"  : 10057
}

    验证admin库里面的sa账户是否能够查看admin库和test库的信息

    

1
2
3
4
5
6
7
8
9
10
11
> db.auth( 'sa' , 'sa' )
1
> show collections
system.indexes
system.users
> use test
switched  to  db test
> show collections
system.indexes
system.users
>

    进入test库并创建用户test密码test

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
> use test
switched  to  db test
> db.addUser( 'test' , 'test' )
{
         "updatedExisting"  true ,
         "n"  : 1,
         "connectionId"  : 10,
         "err"  null ,
         "ok"  : 1
}
{
         "_id"  : ObjectId( "543b80be1d60b11044c2fc59" ),
         "user"  "test" ,
         "readOnly"  false ,
         "pwd"  "a6de521abefc2fed4f5876855a3484f5"
}
>

    ctrl+c退出重新登录,验证test账户能够访问test库和admin库

1
2
3
4
5
6
7
8
9
10
11
12
13
> db.auth( 'test' , 'test' )
1
> show collections
system.indexes
system.users
> use admin
switched  to  db admin
> show collections
Mon Oct 13 17:21:06 uncaught exception: error: {
         "$err"  "unauthorized db:admin lock type:-1 client:127.0.0.1" ,
         "code"  : 10057
}
>

    验证admin库的admin帐号,看是否能查看admin库的信息

1
2
3
4
5
6
7
8
> use admin
switched  to  db admin
> db.auth( 'sa' , 'sa' )
1
> show collections
system.indexes
system.users
>

PS:当验证用户的时候,如果返回1证明有此用户,如果返回0证明没有此用户 如:

1
2
3
4
> use admin
switched  to  db admin
> db.auth( 'sa' , 'sa' )
1

当主从也是用用户验证来同步的情况下,要在master和slave上设置同一用户同一密码:

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
D:\mongodb\bin>mongo.exe  127.0.0.1:27018
MongoDB shell version: 2.0.9
connecting  to : 127.0.0.1:27018/test
>
> use admin
switched  to  db admin
> db.addUser( 'root' , '123' )
"n"  : 0,  "connectionId"  : 1,  "err"  null "ok"  : 1 }
{
         "user"  "root" ,
         "readOnly"  false ,
         "pwd"  "c2eb464922307de3bc3aaf9593f1d49b" ,
         "_id"  : ObjectId( "543cca62a23db6161efcdf78" )
}
> use  local
switched  to  db  local
> db.addUser( 'repl' , '123' )
"n"  : 0,  "connectionId"  : 1,  "err"  null "ok"  : 1 }
{
         "user"  "repl" ,
         "readOnly"  false ,
         "pwd"  "f544158855b8fbf525ce926d8605a348" ,
         "_id"  : ObjectId( "543cca6aa23db6161efcdf79" )
}
> show dbs;
admin   0.078125GB
local    0.078125GB
> bye
D:\mongodb\bin>mongo.exe  127.0.0.1:27017
MongoDB shell version: 2.0.9
connecting  to : 127.0.0.1:27017/test
> show dbs
Tue Oct 14 15:04:16 uncaught exception: listDatabases failed:{  "errmsg"  "need to login" "ok"  : 0 }
> db.auth( 'root' , '123' )
0
> use admin
switched  to  db admin
> db.auth( 'root' , '123' )
1
> show dbs
admin   0.078125GB
local    12.072265625GB
test    (empty)
> bye
D:\mongodb\bin>mongo.exe  127.0.0.1:27018
MongoDB shell version: 2.0.9
connecting  to : 127.0.0.1:27018/test
> show dbs;
Tue Oct 14 15:04:59 uncaught exception: listDatabases failed:{  "errmsg"  "need to login" "ok"  : 0 }
> use admin
switched  to  db admin
> db.auth( 'root' , '123' )
1
> show dbs
admin   0.078125GB
local    0.078125GB
> bye
 
D:\mongodb\bin>mongo.exe  127.0.0.1:27017
MongoDB shell version: 2.0.9
connecting  to : 127.0.0.1:27017/test
> use sean
switched  to  db sean
> db.addUser( 'sean' , '123' )
Tue Oct 14 15:05:44 uncaught exception: error {
         "$err"  "unauthorized db:sean lock type:-1 client:127.0.0.1" ,
         "code"  : 10057
}
> bye
 
D:\mongodb\bin>mongo.exe  127.0.0.1:27018
MongoDB shell version: 2.0.9
connecting  to : 127.0.0.1:27018/test
> show dbs
Tue Oct 14 15:06:26 uncaught exception: listDatabases failed:{  "errmsg"  "need to login" "ok"  : 0 }
> use admin
switched  to  db admin
> show dbs
Tue Oct 14 15:06:30 uncaught exception: listDatabases failed:{  "errmsg"  "need to login" "ok"  : 0 }
> db.auth( 'root' , '123' )
1
> show dbs;
admin   0.078125GB
local    0.078125GB
sean    0.078125GB
> use sean
switched  to  db sean
> show dbsbye
 
D:\mongodb\bin>mongo.exe  127.0.0.1:27018
MongoDB shell version: 2.0.9
connecting  to : 127.0.0.1:27018/test
> use sean
switched  to  db sean
> db.auth( 'sean' , '123' )
1
> show collections
system.indexes
system.users
>









本文转自 xinsir999 51CTO博客,原文链接:http://blog.51cto.com/xinsir/1563383,如需转载请自行联系原作者
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
8月前
|
安全 NoSQL MongoDB
20 MongoDB高级 - 用户管理安全
20 MongoDB高级 - 用户管理安全
57 1
|
NoSQL MongoDB 数据库
docker-compose部署MongoDB以及用户管理
docker-compose部署MongoDB以及用户管理
647 0
|
NoSQL 安全 MongoDB
Python 数据库开发实战 -MongoDB的用户管理
Python 数据库开发实战 -MongoDB的用户管理
|
NoSQL 数据安全/隐私保护
|
数据库 数据安全/隐私保护
mongodb3.x版本用户管理方法
db.auth() 作用:验证用户到数据库。 语法: db.auth( { user: , pwd: , mechanism: , digestPassword: } )   必填的是:用户名和密码   选填的是:mechanism 认证机制和摘要密码标志一个用户文档。
707 0
|
15天前
|
NoSQL JavaScript 前端开发
JavaScript与数据库MongoDB的联动
JavaScript和MongoDB结合,构建Web应用的关键技术。MongoDB,作为NoSQL数据库,以其灵活性和高性能深受开发者喜爱。本文探讨两者的基本概念,如JavaScript在前端交互和后端数据处理的作用,MongoDB的文档存储和查询特性。通过Node.js和mongoose库,展示了连接数据库、定义数据模型及增删改查操作的代码示例。强调了性能优化(如索引、批量操作)和安全措施(如权限控制、数据加密)的重要性。最后,提供了一个简单的CRUD应用示例,涵盖Express和前端API调用。
16 0
|
1月前
|
存储 JSON NoSQL
【文档数据库】ES和MongoDB的对比
【文档数据库】ES和MongoDB的对比
172 1
|
17天前
|
NoSQL MongoDB 数据库
MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
19 0
|
18天前
|
NoSQL Java MongoDB
如何在Spring Boot应用中集成MongoDB数据库
如何在Spring Boot应用中集成MongoDB数据库