Mongodb的安全模式默认是关闭,此时它需要在一个可信任的运行环境中。
在可信任的环境中使用默认的关闭安全模式最简单,但是需要确保可信任的设备访问数据库的TCP端口,
这通常需要隔离数据库所在设备,使其完全无法访问外部网络。
确保网络安全
1, 在分片式环境中
a,集群中的所有的mongodb进程(mongos, mongod, mongod--configsvr)应该是能相互连接的。
b,客户端必须能够连接到mongos进程,但是,它们可以从mongod被阻塞。
2,在非分片式副本环境中
a,所有客户端必须能连接所有非隐藏的副本集成员。
b,副本集的所有成员(mongod进程)需要能够相互通信。
IP 地址绑定
默认情况下,mongod服务器将监听设备上所有可用的IP地址。可以在mongod的"bind_ip"配置项中限制监听的IP地址。
TCP端口号
mongodb默认监听下列端口号:
独立mongod服务:27017
mongos服务: 27017
分片服务(mongod --shardsvr): 27018
配置服务(mongod --configsvr):27019
mongod的网站统计页面端口:通常是28017,即独立mongod服务端口号加1000, 可以用--nohttpinterface 命令行参数禁止统计页面。
以上端口可以更改但不推荐。
在安全模式下运行(使用 --auth 或者 --keyFile)
mongodb支持身份验证和简单的粗粒度访问控制的"安全模式". 可以通过--anth和--keyFile命令行参数启用。
一个通过用户名密码认证的特定数据库,一旦通过认证,普通用户能够完全读写数据库。还可以创建只读用户,使其只有读取权限。
admin数据库是一个特殊的库。一些管理命名只能在admin数据库运行(所以只能由admin运行)。
当然,用户能访问admin数据库也能读写在服务或集群中的其他数据库。
注意:即使使用安全模式,也应该设置合理的防火墙策略。
启动Mongodb服务有两种方式,前台启动或者Daemon方式启动,前者启动会需要保持当前Session不能被关闭,后者可以作为系统的fork进程执行,下文中的path是mongodb部署的实际地址。
1.最简单的启动方式,前台启动,仅指定数据目录,并且使用默认的27107端口,cli下可以直接使用./mongo连上本机的mongodb,一般只用于临时的开发测试。
1 |
./mongod --dbpath=/path/mongodb |
2. 启动绑定固定的IP地址、端口,这就mongo在连接mongod的时候就需要指定IP和端口了。
1 |
./mongod --dbpath=/path/mongodb --bind_ip=10.10.10.10--port=12345 |
2 |
//连接mongod |
3 |
./mongo 10.10.10.10:12345 |
3. daemon后台运行,简单的是命令后面加“&”。
1 |
./mongod --dbpath=/path/mongodb --bind_ip=10.10.10.10--port=12345 & |
或者使用mongod自带的--fork参数,此时必须指定log的路径。
1 |
./mongod --dbpath=/path/mongodb--fork= true logpath=/path/mongod.log |
4. (推荐)以配置文件形式保存配置。
1 |
port=12345 |
2 |
bind_ip=10.10.10.10 |
3 |
logpath=/path/mongod.log |
4 |
pidfilepath=/path/mongod.pid |
5 |
logappend= true |
6 |
fork= true |
然后启动mongod时引入配置文件
./mongod -f /path/mongod.conf
下面是mongod启动的常用参数详细说明:
参数 | 说明 | 取值示例 |
dbpath | mongodb数据文件存储路径 | /data/mongodb |
logpath | mongod的日志路径 | /var/log/mongodb/mongodb.log |
logappend | 日志使用追加代替覆盖 | true |
bind_ip | 绑定的IP | 10.10.10.10 |
port | 绑定的端口 | 27107 |
journal | write操作首先写入“日记”,是一个数据安全的设置,具体参考官方文档。 | true |