基于业务需求,18年开发了一些小型爬虫。因为安装简单加上想多学点nosql
相关的知识,于是在本地使用了MongoDB 4.0进行存储。由于之前的数据并不太重要,再加上只是用于存储使用,便任其裸奔。最近要基于业务数据进行可视化开发工作,再往前段时间也爆出了未设置账户密码的数据泄露新闻,于是尝试对本地的MongoDB数据库设置用户密码。
默认情况下,MongoDB是没有超级管理员账户的,除非已经再admin中创建了用户并修改了配置文件,否则不用进行任何认证即可访问、修改数据。
设置用户管理员
- 管理员身份打开cmd
- 切换到 MongoDB 安装路径(...\Mongodb\bin)
- cmd中运行
mongo.exe
-
use admin
切换到admin数据库 -
db.createUser({user:"myAdmin",pwd:"666666",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
创建任何数据库上的用户管理员账户和密码。
MongoDB内置的数据库角色有:
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
7. 内部角色:__system
引用自: https://www.cnblogs.com/qk2014/p/9253506.html
- 使用
db.auth({user: "myAdmin", pwd: "666666"})
命令可以查看用户是否成功,成功返回1。
至此,用户管理员创建成功,这里创建的是可以管理任何数据库的角色。
但目前不使用用户名仍然可以直接访问、修改所有数据库。
修改配置文件
还是安装目录下,用编辑器打开mongod.cfg
,取消 security
的注释,修改成:
security: authorization: enabled
。
管理员模式打开cmd,使用如下命令重启MongoDB服务:
net stop Mongodb
net start Mongodb
再次连接数据库就需要账户和密码验证了。
针对具体数据库创建账户、密码
同第一步的流程,运行mongo.exe
进入操作界面:
- 使用
use 数据库名字
切换到特定数据库 - 运行
db.createUser({user:"dboperator",pwd:"666666",roles:[{role:"readWrite",db:"admin"}]})
给数据库创建了dboperator角色,只对该数据库拥有读写的权限。
修改Robo 3T中的连接设置
我的图形客户端使用的是Robo 3T,之前使用的一直是默认连接。经过本文的一番设置之后,默认连接肯定是失效了。
image.png
在如图界面设置了用户密码及访问的数据库之后,点击 test 测试连接,通过后保存即可。
之后通过修改过的连接就可以很轻松得访问用户对应的数据库了,可以看到角色不同,所能查看的数据库范围也不尽相同。
image.png
image.png
网友评论