MongoDB 默认安装完成以后,默认安装的MongoDB是无账号密码即可访问的;为了连接的安全性必须开启认证登录以保证数据的安全性
目录
一:创建超级用户
use admin;
db.createUser({user: 'admin', pwd: 'admin', roles: [{role: 'root', db: 'admin'}]});
# 在"admin"数据库中,创建"admin"用户,密码设置为"admin",授予该用户"超级用户角色"
注:”超级用户角色“拥有数据库最高管理权限,可以管理所有数据库
二:创建数据库管理用户
在MongoDB中,不同的数据库可以创建相同的用户名;例如在数据库”test1“和数据库”test2”中,都存在一个“test”用户,这两个用户分别管理各自的库,两个数据库分别为这两个用户的“认证数据库”(在SQL客户端或工具进行连接时,需要提供登录用户的“认证数据库”作为区分)
> use test1
switched to db test1
> db.createUser({user: "test", pwd: "test", roles: [{ role: "dbOwner", db: "test1" }]})
# 在数据库"test1"中,创建用户test,设置密码test,设置角色dbOwner(可以在当前DB中执行任意操作)
> use test2
switched to db test2
> db.createUser({user: "test", pwd: "test", roles: [{ role: "dbOwner", db: "test2" }]})
# 在数据库"test2"中,创建用户test2,设置密码test2,设置角色dbOwner(可以在当前DB中执行任意操作)
三:重启数据库
[root@test~]# systemctl restart mongodb
四:登录并启用认证
[root@test~]# mongo
> use admin
switched to db admin
> db.auth("admin", "admin")
# 首先使用use命令登录指定数据库,然后使用db.auth()命令进行用户认证,否则没有权限操作数据库
附:MongoDB权限类型
角色描述 | 角色标识 |
---|---|
数据库用户角色 (Database User Roles) | read:授予User只读数据的权限 readWrite:授予User读写数据的权限 |
数据库管理角色 (Database Administration Roles) | dbAdmin:在当前dB中执行管理操作 dbOwner:在当前DB中执行任意操作 userAdmin:在当前DB中管理User |
备份和还原角色 (Backup and Restoration Roles) | backup restore |
跨库角色 (All-Database Roles) | readAnyDatabase:授予在所有数据库上读取数据的权限 readWriteAnyDatabase:授予在所有数据库上读写数据的权限 userAdminAnyDatabase:授予在所有数据库上管理User的权限 dbAdminAnyDatabase:授予管理所有数据库的权限 |
集群管理角色 (Cluster Administration Roles) | clusterAdmin:授予管理集群的最高权限 clusterManager:授予管理和监控集群的权限 clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限 hostManager:管理Server |
超级用户角色 (Super User) | root:授予数据库最高管理权限 |