mongodb的用户管理

本文涉及的产品
云数据库 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
目录
相关文章
|
5月前
|
安全 NoSQL MongoDB
20 MongoDB高级 - 用户管理安全
20 MongoDB高级 - 用户管理安全
47 1
|
9月前
|
NoSQL MongoDB 数据库
docker-compose部署MongoDB以及用户管理
docker-compose部署MongoDB以及用户管理
476 0
|
10月前
|
NoSQL 安全 MongoDB
Python 数据库开发实战 -MongoDB的用户管理
Python 数据库开发实战 -MongoDB的用户管理
|
NoSQL 数据安全/隐私保护
|
数据库 数据安全/隐私保护
mongodb3.x版本用户管理方法
db.auth() 作用:验证用户到数据库。 语法: db.auth( { user: , pwd: , mechanism: , digestPassword: } )   必填的是:用户名和密码   选填的是:mechanism 认证机制和摘要密码标志一个用户文档。
696 0
|
1天前
|
NoSQL MongoDB 数据库
MongoDB数据恢复—MongoDB数据库文件被破坏的数据恢复案例
服务器数据恢复环境: 一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。 MongoDB数据库故障&检测: 工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB服务,服务无法启动。
|
5天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
52 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
1月前
|
NoSQL 网络协议 MongoDB
Windows公网远程连接MongoDB数据库【无公网IP】
Windows公网远程连接MongoDB数据库【无公网IP】
|
1月前
|
存储 NoSQL 关系型数据库
一篇文章带你搞懂非关系型数据库MongoDB
一篇文章带你搞懂非关系型数据库MongoDB
57 0