- 浏览: 392857 次
- 性别:
- 来自: 杭州
最新评论
-
dannyhz:
做股票从短线 试水,然后 慢慢发现 波段和 中期的故事可挖, ...
搭台唱戏 -
dannyhz:
http://developer.51cto.com/art/ ...
如何自己开发框架 它的注意点是什么
引用
一、关于权限的默认配置
在默认情况下,mongod是监听在0.0.0.0之上的,任何客户端都可以直接连接27017,且没有认证。这样做的好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱。然而坏处也是显而易见,如果直接在公网服务器上如此搭建MongoDB,那么所有人都可以直接访问并修改数据库数据了。
默认情况下,mongod也是没有管理员账户的。因此除非你在admin数据库中使用db.addUser()命令添加了管理员帐号,且使用–auth参数启动mongod,否则在数据库中任何人都可以无需认证执行所有命令。包括delete和shutdown。
此外,mongod还会默认监听28017端口,同样是绑定所有ip。这是一个mongod自带的web监控界面。从中可以获取到数据库当前连接、log、状态、运行系统等信息。如果你开启了–rest参数,甚至可以直接通过web界面查询数据,执行mongod命令。
其实MongoDB本身有非常详细的安全配置准则,显然开发者也是想到了,然而他是将安全的任务推给用户去解决,这本身的策略就是偏向易用性的,对于安全性,则得靠边站了。
二、MongoDB用户类型
MongoDB的用户分为两种,一种是admin用户,另一种是特定数据库用户。admin用户拥有最高的权限,而特定数据库用户则只能访问特定的数据库。当MongoDB的admin库里没有任何用户的时候,也就是说整个MongoDB没有一个MongoDB用户的时候,即便–auth权限需求打开了,用户还是可以通过localhost界面进入MongoDB进行用户设置,否则的话整个MongoDB就完全没法访问了。而当这个用户创建完成之后,之后的用户登录和操作就需要授权了,不是直接登录就能使用的了。
MongoDB有一个比较奇怪的设置是,即便是一个admin用户,授权也必须在admin数据库下进行,而不能在其他数据库下进行。而授权之后admin用户就可以在任何数据库下进行任何操作了。当然数据库级别的用户在他自己的数据库下授权之后是不能到其他数据库进行操作的。举例来说:
> use test
> db.auth(“someAdminUser”, password)
操作失败,提示还没有在admin数据库下对afmin用户进行授权。
三、操作实例
启动MongoDB,在cmd命令框里进入数据库的bin目录;
1. 输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,一个名为local;本文只对admin库进行描述
2. 输入命令:use admin,你会发现该DB下包含了一个名为system.user的collection,这是用户表,用来存放超级管理员的
备注:本文使用的数据库版本是2.0.1,没有默认的admin数据库,但是在执行第二步之后自动创建了一个admin库; 当然也没有默认的system.user表,运行后面的第三步后会自动创建 system.user和system.indexes )
3. 输入命令:db.addUser('root','root'),这里我添加一个超级管理员用户,username为root,password也为root。先退出 (ctrl+c)程序,测试重启服务后再次连接MongoDB是否需要按提示输入用户名、密码进行操作。
4. 输入命令:use admin
5. 输入命令:show collections,查看该库下所有的表,你会发现,MongoDB并没有提示你输入用户名、密码,原因是,在文章最开始提到了,MongoDB默认设置为无权限访问限制,我们需要先把它设置成为需要权限访问
6.从新打开cmd,在mongodb路径的bin目录下,执行mongod --dbpath d:\work\data\mongodb\db --auth
7. 输入命令:use admin
8. 输入命令:show collections,提示:"$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1"
显然,已经提示没有权限;用刚才设置的用户名、密码来访问集合
9. 输入命令:db.auth(“root”,”root”),输出一个结果值为1,说明这个用户匹配上了,如果用户名、密码不对,输出为0
10. 输入命令:show collections,将成功显示结果
继续操作,可以访问已经存在的数据库,但对于新建的数据库仍然没有权限;继续操作,先退出(ctrl+c)服务
11. 输入命令:mongo TestDB
12. 输入命令:show collections,提示:没有权限
13. 输入命令:db.auth(“root”, “root”),输出结果为0,说明用户名或者密码有问题,刚刚前面才创建,怎么会不对呢?原因在于:当我们单独访问MongoDB的数据库时,需要权限访问的情况下,用户名密码并非超级管理员,而是该库的system.user表中的用户,注意,我这里说的是单独访问的情况,什么是不单独访问的情况呢?后面再讲。针对上述情况,接下来操作:
14. 输入命令:db.addUser('test','111111'),仍然提示没有权限,新的数据库使用超级管理员也无法访问,创建用户也没有权限,不过即然设定了超级管理员用户,那它就一定有权限访问所有的库
15. 输入命令:use admin
16. 输入命令:db.auth(“root”, “root”)
17. 输入命令:use TestDB
18. 输入命令:show collections,之后可以利用超级管理员用户访问其它库了,这个就是不单独访问的情况。在上述操作过程中,我们是先进入admin库,再转到其它库来的,admin相当于是一个最高级别用户所在的区域,对数据库操作,需要经过最高级别用户,之后可以创建每个数据库的用户。
19. 输入命令:db.addUser('test','12345'),我们给TestDB库添加一个用户,以后每次访问该库,我都使用刚刚创建的这个用户,我们先退出(ctrl+c)
20. 输入命令:mongo TestDB
21. 输入命令:show collections,提示没有权限
22. 输入命令:db.auth('test','12345'),输出结果1,用户存在,验证成功
23. 输入命令:show collections,成功显示结果
四、启动和关闭MongoDB的各种参数
详见:http://blog.csdn.net/pgwindwind/article/details/8005262
比如要改变MongoDB的默认端口,则可以这样使用--port参数:
打开cmd,在mongodb路径的bin目录下,执行mongod --port 50107 --dbpath d:\work\data\mongodb\db --auth
这样访问MongoDB就是以50107的端口访问了
分类: mongodb
好文要顶 关注我 收藏该文
二郎神
关注 - 82
粉丝 - 19
+加关注
0 0
« 上一篇:rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较
» 下一篇:mongodb 启动
posted on 2017-02-06 10:41 二郎神 阅读(29301) 评论(2) 编辑 收藏
Comments
#1楼
三一三
相关推荐
### MongoDB权限设置详解 #### 一、概述 在现代数据管理中,安全性是至关重要的一个方面,MongoDB作为一款流行的NoSQL数据库系统也不例外。本文将详细介绍如何在MongoDB中进行权限设置,确保数据的安全访问与操作...
3. 连接MongoDB:启动MongoDB Compass,输入服务器地址、端口(默认为27017),以及认证信息(如果设置了用户名和密码)。 4. 使用:在Compass中,你可以浏览数据库和集合,创建和运行查询,查看文档,进行数据导入...
启动MongoDB Compass,输入服务器地址(localhost或IP)、端口(你配置的端口)、用户名和密码,即可连接到MongoDB实例进行管理。 总结,安装MongoDB在Windows上涉及下载安装包、配置安装路径、设置数据存储和日志...
1. **连接与认证**:通过Delphi代码,开发者需要设置MongoDB服务器的地址、端口以及可能的认证凭据,如用户名和密码。C驱动会处理底层的网络通信和协议细节。 2. **数据模型**:MongoDB使用JSON-like的BSON(Binary...
- **认证**:启用用户认证,要求所有客户端提供有效的用户名和密码才能连接到数据库。 - **授权**:设置角色和权限,指定用户可以执行哪些操作,如读取数据、写入数据等。 - **数据加密**:为了增强安全性,可以配置...
在安全方面,MongoDB 3.0.7版本加强了身份验证和授权机制,用户可以通过设置用户名和密码来保护数据库,并且可以控制不同用户的访问权限。同时,SSL/TLS支持允许加密数据传输,提高网络通信的安全性。 总的来说,...
MongoDB 是一个流行的开源、高性能、无模式的文档型数据库,常被用于处理大量数据的Web应用程序、...同时,了解MongoDB的最佳实践,如设置用户权限、监控系统性能以及配置复制集以实现高可用性,是运维MongoDB的关键。
6. **auth**:启用认证功能,即用户在连接到MongoDB时必须提供有效的用户名和密码。 - 示例:`auth=true` 7. **master**:指定MongoDB实例为主节点(适用于复制集)。 - 示例:`master=true` #### 四、启动与关闭...
1. 数据库连接:用户可以通过输入服务器地址、端口号、数据库名、用户名和密码等信息,轻松建立与MongoDB服务器的连接。 2. 数据浏览:可以直观地查看和编辑MongoDB集合中的文档,支持JSON格式的显示和编辑,便于...
3. **设置权限**:MongoDB运行时需要对数据目录具有读写权限,确保当前用户或mongod服务对此目录有适当权限: ```bash sudo chown -R your_username /data/db ``` 请将`your_username`替换为实际的用户名。 4...
2. 配置TP连接MongoDB:在TP框架的配置文件中,设置数据库连接信息,包括主机名、端口号、数据库名、用户名和密码。 3. 创建MongoDB模型:在TP中,每个数据库表对应一个模型,对于MongoDB,我们可以创建一个MongoDB...
安装mongobooster-3.3.1.exe文件后,用户只需输入MongoDB服务器的相关信息(如主机地址、端口、用户名、密码),即可开始使用这个强大的工具。在使用过程中,应确保MongoDB服务已经正常运行,并且拥有足够的权限进行...
- `-h <host>:<port>`: 指定MongoDB服务所在的主机地址及端口。 - `-o <output_directory>`: 指定备份数据的目标目录。 **示例**: 对名为`paas0703_20150709`的MongoDB数据库进行备份,备份目录为`E:\Program...
3. **连接认证**:当用户认证启用后,连接MongoDB时需要提供用户名和密码。 最后,我们来看看如何**将MongoDB与Spring集成**。Spring提供了`MongoTemplate`和`MongoRepository`等工具,方便地进行数据操作。 1. **...
用户可以配置包括主机名、端口、数据库名、用户名和密码等连接参数。 2. **数据浏览**:此工具提供了一个清晰的表格视图,用户可以浏览数据库中的集合、文档和索引。它支持查看文档内容,包括嵌套对象和数组,以及...
1. **连接管理**:配置不同的MongoDB服务器地址、端口、用户名和密码,支持多个MongoDB实例的连接和切换。 2. **数据浏览**:查看数据库列表,进入特定数据库后,可以浏览集合(相当于关系数据库中的表)以及集合中...
如果启用了身份验证,需要在连接时提供用户名和密码,如:`mongo --username myUser --password myPassword --authenticationDatabase admin`. 9. **备份与恢复** 要备份MongoDB数据,可以使用`mongodump`工具;...
IP地址和端口、用户名和密码都要预先规划好。集群搭建需要在每台机器上启动一个MongoDB实例,通常包括Master、Slave和Arbiter。启动后需要进行集群配置,比如使用rs.initiate()初始化Replica Set。 ### Spring Boot...
- **设置监听端口**:通过`--port`参数指定MongoDB服务监听的端口。 - **使用用户名和口令登录**:启用身份验证机制,通过`--auth`参数启动。 2. **权限管理**: - 默认情况下,MongoDB使用admin数据库来管理...