MongoDB之快速设置用户认证和权限
安装MongoDB,详细教程见官方文档Install MongoDB,本人使用Ubuntu20.04以及mongo 6。文档有详细步骤,此文只说明如何快速授予角色密码的登录。默认安装完毕并设置启动后,是不允许远程客户端连接的。此时需要关闭MongoDB服务,去mongo.conf配置文件中设置远程连接,如:
net: port: 27017 bindIp: 127.0.0.1 ipv6: true bindIpAll: true“bindIpAll”标明开放所有客户端ipv4的连接,“ipv6: true”标识开放ipv6的连接。你也可以跳过我的此种设置,在“bindIp”中指明特定的远端ip地址连接。此时重启MongoDB。注意:你需要开放特定的27017端口。在第三方客户端,如navicat中可以不用指定任何密码直接连接MongoDB服务器。因此,我们必须开启身份验证。输入“mongosh”进入服务,然后输入命令创建一个具有超级管理员(root)角色的用户,超级管理员具有以下内置角色的操作:
- readWriteAnyDatabase
- dbAdminAnyDatabase
- userAdminAnyDatabase
- clusterAdmin
- restore
- backup
use admin db.createUser( { user: "strongUser", pwd: passwordPrompt(), roles: [ { role: "root", db: "admin" } ] } )然后在交互中输入你想要创建的密码。此"strongUser"将具有操作admin等系统db以及其他普通db的权限。若你需要创建一个用户只具有读写某个db的用户,则:
use bookUser //务必切换到目标db db.createUser( { user: "bookUser", pwd: passwordPrompt(), roles: [ { role: "readWrite", db: "bookDb" } ] } )以上命令将创建只具有读写bookDb的用户。注意,你必须切换到要添加用户的那个db,否则你添加的用户将只是存在于当前db(如admin)的user下,这将导致登录用户时必须切换到db为"admin"下进行登录。在"bookDb"下登录将拒绝,因为此db的user列表没有此用户。虽然这样也可以登陆成功且只能操作授予了权限的db,但这容易导致逻辑混乱。同样,你也不能在“bookDb”下尝试登录“strongUser”用户,即使密码正确也将拒绝登录,因为此用户属于“admin”的db中。最后,重启服务。键入“mongosh”,你将不在具有”show dbs“等访问控制权限。使用"db.auth('admin')",你将获取所有db的操作权限。同样,在第三方客户端时,你需要指定用户和密码,才能成功操作具有对应授权的数据库。否则将报出
command listDatabases requires authentication的权限错误,证明了验证安全。
来自:计算机系统与软件工具
更新于2022-09-11 23:33:13 发表于2022-09-11 16:10:23
更新于2022-09-11 23:33:13 发表于2022-09-11 16:10:23
发表您的评论