关灯
护眼 字体:大
中
小
上一章
章节列表
下一章
MongoDB默认没有密码,且只有运行MongoDB电脑上的程序能够访问。实际上MongoDB也是可以设置远程访问的。但是一旦开启了外网访问,就一定要设置账号和密码,否则可能会导致安全隐患,甚至遭遇勒索敲诈。
8.2.1 配置权限管理机制
MongoDB默认没有账号和密码,只要连上了它就可以查询、修改、增加、删除任何内容。
为了增强MongoDB的安全性,需要配置基于角色的访问控制(Role-Based Access Control, RBAC)机制。
RBAC机制涉及三个关键定义:角色(Roles)、特权(Privileges)和用户(Users)。
● 特权是指一些资源和能够在资源上进行的操作。
● 一个角色可以有多种特权。
● 一个用户可以有被赋予不同的角色。
1.创建管理员用户
管理员用户的作用是创建其他用户。管理员用户本身不能对数据库进行控制。
在Linux或者macOS中,执行命令“mongo”打开MongoDB命令行客户端,如图8-8所示。
在Windows中,使用DOS命令进入MongoDB的bin文件夹下,然后执行命令“mongo.exe”来启动命令行客户端。
图8-8 MongoDB命令行客户端
在MongoDB命令行客户端中,执行以下命令来创建管理员用户。
代码8-11 在MongoDB命令行中创建管理员用户
其中,主要代码说明如下。
● 第1行代码:切换到admin数据库。admin数据库是MongoDB自带的数据库。
● 第3~9行代码:创建管理员,账号名称为 admin,密码为 kingnameisgenius,角色为userAdminAnyDatabase,控制的数据库为admin。
提示:
这里的写法有点像JavaScript的写法,每一个参数换行,但第3~9行其实本质上是一条命令。
运行效果如图8-9所示。
图8-9 切换到admin数据库并创建管理员
创建好管理员账户以后,在MongoDB命令行客户端中直接输入“exit”后按回车键,即可退出MongoDB命令行客户端。
修改第3章创建的配置文件mongodb.conf,添加如下两行内容:
效果如图8-10所示。
图8-10 启用权限管理功能
保存配置文件并重启MongoDB数据库。再次执行“mongo”命令,发现虽然能够连上数据库,但是已经不能执行常规操作了,如图8-11所示。
图8-11 启动权限管理以后直接使用命令行客户端已经不能正常操作了
要正常使用命令行客户端,必需把mongo的启动命令修改为:
mongo -u 'admin' -p 'kingnameisgenius' --authenticationDatabase 'admin'
启动以后发现可以正常执行常规操作了,如图8-12所示。
图8-12 带参数启动命令行客户端
2.创建普通用户
管理员账户是没有权限操作普通数据库的。要操作普通数据库,还需要创建普通用户。
使用管理员账户登录命令行客户端后,执行以下命令创建一个对chapter_8数据库有读写权限,对chapter_4只有读权限的普通用户。
代码8-12 在MongoDB命令行中创建普通用户
运行效果如图8-13所示。
图8-13 添加kingname用户
3.使用Robo 3T连接有账号的MongoDB
启动权限管理并添加账号以后,原来的Robo 3T已经不能正常连接MongoDB数据库了,如图8-14所示。此时,需要修改Robo 3T的连接设置。
图8-14 Robo 3T不能正常连接MongoDB
(1)在连接列表中,选中到本地 MongoDB 的链接,并单击“edit”链接(图中左上角),如图8-15所示。
图8-15 单击“edit”连接
(2)弹出连接设置对话框,切换至Authentication选项卡,勾选“Perform Authentication”复选框,填写被授权访问的数据库名,并填写用户名和密码,如图8-16所示。
图8-16 填写用户名和密码
(3)填写完成以后保存,就可以正常连接MongoDB了,如图8-17所示。
图8-17 kingname用户查看chapter_8数据库
4.创建能操作数据库的管理员用户
管理员(admin账号)能创建其他用户,看似权限非常大,但它不能访问任何一个数据库。所以,如果有必要,还需要创建一个能对所有数据库都有全部权限的用户。
(1)在 MongoDB 的命令行客户端中,使用管理员(admin)连接MongoDB,然后执行以下命令创建一个对所有数据库有完全控制权限的用户。
代码8-13 创建能操作数据库的管理员
(2)运行效果如图8-18所示。
图8-18 创建超级用户
(3)在robo 3T的连接设置中,使用root用户连接数据库,并把数据库设定为admin,如图8-19所示。
图8-19 使用root用户连接数据库
(4)连接以后发现可以操作所有数据库了,如图8-20所示。
提示:
能力越大责任越大,请慎重考虑是否有必要添加root用户。
图8-20 root用户可以操作所有数据库
<
m.qiduwx.com提示您,本章没有阅读完,点击下一页进入下一页阅读!
上一章
章节列表
下一章