为了保证数据的安全性,mongodb提供了两种方式的安全验证机制:①账号密码认证 ②IP绑定
一、账号密码认证
这个没什么好说的,和普通关系型的数据库一样,使用账号密码进行认证,并且,用户有权限的概念,比如mysql中用户细分可以管理哪些表。
在mongodb中,用户有两种,一种是超级管理员用户,一种是数据库拥有者。
切换至admin数据库,在system.users集合中,我们可以看到本实例中所有的用户,及其roel。如下:
而后,在启动mongoDB的时候,使用 -auth 表示需要用户名账号密码验证。
可以使用db.addUser('userName','pwd')向本数据库下添加用户。
在java中,验证用户账号密码身份:
db.authenticateCommand(username, password)
在python中,验证账号密码“:
db.authenticate('testAdmin','123')
二、ip地址绑定
启动mongodb的时候,使用 -bind_ip 192.168.20.21 表示启动ip地址绑定,数据库实例将只监听192.168.20.21的请求。
ip绑定是怎么实现安全控制的呢?
假设我们的mongodb安装在一台连接外网的服务器上,这台服务器又和其他服务器处于局域网中。那么这台服务器将有三个ip地址:127.0.1.1,内网ip,外网ip。为了保证安全,我们只能只用127.0.0.1或者内网ip。
如果使用127.0.0.1,那么连接mongoDB的应用就必须在mongodb的服务器上。这样肯定能实现安全保证。
如果使用内网ip,应用在连接mongodb的时候,必须MongoClient client = new MongoClient("192.168.20.114", 27017);这个ip必须是一个内网ip,外部网络的服务器就不能访问mongodb服务器。从而实现安全。
总结:为了尽可能保证安全,我们一般使用两种方式的结合体,既绑定ip又使用账号密码认证机制。
另外,mongodb的默认端口是27017,一般也需要更改这个默认端口,来尽可能提高安全性。如何更改默认端口呢?只需要在启动mongodb的时候加上 -port参数就OK了。