MongoDB 访问控制

来源:互联网 发布:ios11 蜂窝数据 编辑:程序博客网 时间:2024/05/22 03:04

Mongodb默认启动是不带认证的,也没有账号,只要连接上服务就可以进行CRUD操作。作为数据库软件,为了保证数据的安全,可以采用以下方法提高数据访问的安全性:

1、绑定要访问MongoDB服务所在的ip内网地址
在启动时添加--bind_ip参数用以限制只允许某一特定IP地址访问MongoDB服务,如:服务端限制只有58.20.3.52这个IP可以访问MongoDB服务
QQ截图20120706164944

客户端访问时需要指定服务端的IP,否则会报错:
QQ截图20120706165239
此时服务端和客户端位于一台机器,所以IP一致


2、设置监听端口
默认的监听端口是27017,我们可以修改这个监听端口,如:将服务器监听端口修改为27018
QQ截图20120706170726

当服务端指定了端口后,客户端访问时需要明确指定端口才可以访问
QQ截图20120706170851


3、使用用户名和口令登陆

MongoDB默认启动是不需要用户名和密码的,一个MongoDB实例中的每个数据库都可以拥有许多用户,使用--auth开启安全性检查,则只有数据库认证的用户才能执行读写操作

1、添加用户,使用addUser('username’, ‘password’, ‘是否只读true|false(default)' )
QQ截图20120706174815
在admin数据库中的用户被视为超级管理员,--auth开启安全认证检查之前一定要有个管理员帐号

QQ截图20120706193425
test普通数据库中添加了两个普通账户tom和tory,而tory账户只拥有readOnly权限。

2、开启安全认证检查(--auth)
启动MongoDB服务时添加-auth参数开启安全认证,开启安全认证检查之前一定要有个管理员帐号
QQ截图20120706155857

带有-auth参数时,必须通过认证才可以查询数据。如果没有加-auth参数,即使配置了安全认证用户,也不需要认证谁都可以操作。

3、用户认证
使用--auth开启安全性检查之后,则只有数据库认证的用户才能执行读写操作
QQ截图20120706190013
db.auth('tom' ,'123')用户认证,tom用户具有test数据库下的读写权限

QQ截图20120706193818
tory用户只有test数据库下的读权限

非特权用户不能使用show dbs查看所有数据库,作为超级管理员root用户,可以对所有数据库进行任意操作。

system.user

每个数据库的用户账号都是以文档形式存储在system.users集合里面的,
文档结构{'user':username, 'readOnly':true, 'pwd': password hash}。password hash是根据用户名和密码生成的散列。
QQ截图20120706194842

QQ截图20120706195143

查询某个数据库下的用户db.system.users.find();
删除某个数据库下的所有用户db.system.users.remove(),删除指定用户db.system.users.remove({'user':'用户名'})

 

转载链接:http://my.oschina.net/xiaomaoandhong/blog/65270

原创粉丝点击