MongoDB的访问控制

windows环境下完成mongodb的访问控制

windows环境下安装好的mongodb默认是没有访问控制、管理用户的,这样是有很大的安全风险的。

本文通过cmd命令行来完成

一、环境

win10,MongoDB4.0.2

安装路径:E:\Program Files\MongoDB4.0

二、没有访问控制的情形

没有开启访问控制的情况下,只需要知道ip地址,端口就能连接,并且可以操作数据库。

就拿本地来说:

1、cmd进入到E:\Program Files\MongoDB4.0\bin,输入mongo打开mongo shell
E:\Program Files\MongoDB4.0\bin>mongo

# 显示信息
MongoDB shell version v4.0.21
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("8931512b-f690-437b-9c42-0261e7631d1e") }
MongoDB server version: 4.0.21
Server has startup warnings:
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten]
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten]
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server.
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten] **          Start the server with --bind_ip <address> to specify which IP
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten] **          addresses it should serve responses from, or with --bind_ip_all to
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten] **          bind to all interfaces. If this behavior is desired, start the
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten] **          server with --bind_ip 127.0.0.1 to disable this warning.
2020-11-20T10:33:49.327+0800 I CONTROL  [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

可以看到显示出很多的warning信息,比如服务绑定只有本地,需要开放,还有权限控制等。

2、进入到shell中,输入show dbs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VSEeBJOI-1611563165988)(mongodb访问控制.assets/image-20201120132622213.png)]

直接就能看到所有数据集的信息。

三、添加访问控制

1、利用db.createUser()命令创建超级管理用户,该用户可以用来创建下级用户,可以用作身份认证,也可以操作所有数据集。
db.createUser({
    "user" : "admin",
    "pwd" : 可以明文设置密码
    "roles" : [ 
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
})

具体其他的用户级别可以自行查找。创建完毕后可以使用show users查看创建好的用户。

2、用户创建好之后需要开启访问控制(命令行开启方式)

windows环境下可以先删除当前的服务(实例还是存在磁盘中)。如何删除呢。

再开一个cmd并且以管理员权限进入,进去后如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ShXHmTQj-1611563165991)(mongodb访问控制.assets/image-20201120134551549.png)]

使用sc delete 服务名删除服务,成功如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ilodJb9s-1611563165993)(mongodb访问控制.assets/image-20201120134727566.png)]

然后进入到mongodb安装目录下的bin目录,如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HbH7nvZW-1611563166002)(mongodb访问控制.assets/image-20201120134942624.png)]

注意,此时要去windows服务里面将该服务彻底删掉,cmd里面删除了,但是服务里面还会挂着,虽然挂着也没用。不然会影响服务重新安装。

再次以开启认证(–auth)的方式安装服务:

E:\Program Files\MongoDB4.0\bin>mongod.exe --auth --dbpath "E:\Program Files\MongoDB4.0\data" --logpath "E:\Program Files\MongoDB4.0\log\mongod.log" --logappend --serviceName MongoDB --install

# 各种路径根据自己的去更改

注:dbpath之类的后面路径如果有空格,则路径要加上双引号,否则报错。

安装成功情况下是不会出现任何信息,直接跳出下一个或输入命令行。

windows下可以进入服务查看服务是否启动成功。然后便可以按照之前的方法连接mongodb,试着输入show dbs,会发现什么输出都没有,那是因为没有权限,这时可以使用db.auth("用户名", "密码")进行认证。

当然也可以在连接时使用mongo -u "user" -p "pwd"进行连接,然后show dbs就能看到信息了。

3、除了命令行开启方法,还有以配置文件开启(待补充)

四、创建管理用户下的其他用户

有了超级管理用户,就可以分配数据库了,可以限制新用户只能读、写或读写特定数据库,可以创建新的数据库——use test,然后创建用户只能读写该数据库

> use test
> db.createUser({
	"user" : "testUser",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "test"
		}
	]
})

然后以该用户连接mongodb实例,直接show dbs

在这里插入图片描述

可以发现只有test数据库能看到。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值