博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB 访问控制
阅读量:2286 次
发布时间:2019-05-09

本文共 1217 字,大约阅读时间需要 4 分钟。

来自:http://blog.csdn.net/tian_yan_jing/article/details/7877289 

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

1、绑定要访问MongoDB服务所在的ip内网地址

在启动时添加--bind_ip参数用以限制只允许某一特定IP地址访问MongoDB服务,如:服务端限制只有58.20.3.52这个IP可以访问MongoDB服务

客户端访问时需要指定服务端的IP,否则会报错:

此时服务端和客户端位于一台机器,所以IP一致

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

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

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

1、添加用户,使用addUser('username’, ‘password’, ‘是否只读true|false(default)' )

在admin数据库中的用户被视为超级管理员,--auth开启安全认证检查之前一定要有个管理员帐号
test普通数据库中添加了两个普通账户tom和tory,而tory账户只拥有readOnly权限。

2、开启安全认证检查(--auth)

启动MongoDB服务时添加-auth参数开启安全认证,开启安全认证检查之前一定要有个管理员帐号
带有-auth参数时,必须通过认证才可以查询数据。如果没有加-auth参数,即使配置了安全认证用户,也不需要认证谁都可以操作。

3、用户认证

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

tory用户只有test数据库下的读权限

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

system.user

每个数据库的用户账号都是以文档形式存储在system.users集合里面的,

文档结构{'user':username, 'readOnly':true, 'pwd': password hash}。password hash是根据用户名和密码生成的散列。

查询某个数据库下的用户db.system.users.find();

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

 

转载链接:

你可能感兴趣的文章
打印流PrintStream和PrintWriter
查看>>
IO流 合并流 SequenceInputStream
查看>>
IO流切割文件
查看>>
IO流-对象序列化操作流
查看>>
io流-多线程连接管道流
查看>>
RandomAccessFile可实现数据的分段写入也就是多线程下载
查看>>
DataInputStream与DataOutputStream用于操作基本数据类型的数据的流对象
查看>>
ByteArrayStream用于操作字节数组的流对象
查看>>
IO流-字符编码表转换示例
查看>>
IO流-转换流的字符编码转换-ISO-8859-1和utf-8和GBK互转
查看>>
网络游戏线上活动的类型及特点(二)
查看>>
sleeping-to-save-cpu
查看>>
键盘符号英语读法
查看>>
[转]char_traits
查看>>
[转载] 人生三重境界
查看>>
[转载]学习时注意思考方法
查看>>
C10K问题
查看>>
STL 线程安全性
查看>>
Writing Reentrant and Thread-Safe Code(编写可重入和线程安全的代码)
查看>>
可重入性
查看>>