理解 admin 数据库
安装 MongoDB 时,会自动创建 admin 数据库,这是一个特殊数据库,提供了普通数据库没有的功能。
有些用户角色赋予用户操作多个数据库的权限,而这些角色只能在 admin 数据库中创建,要创建有权操作所有数据库的超级用户,必须将该用户加入到 admin 数据库中。检查凭证时,MongoDB 将在指定数据库和 admin 数据库中检查用户账户。
内建的角色
数据库用户角色:
read、readWrite;
数据库管理角色:
dbAdmin、dbOwner、userAdmin;
集群管理角色:
clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:
backup、restore;
所有数据库角色:
readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:
root #这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
角色说明:
read:
允许用户读取指定数据库;
readAnyDatabase:
只在admin数据库中可用,赋予用户所有数据库的读权限;
readWrite:
允许用户读写指定数据库;
readWriteAnyDatabase:
只在admin数据库中可用,赋予用户所有数据库的读写权限;
dbAdmin:
允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile;
dbAdminAnyDatabase:
只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限;
clusterAdmin:
只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限;
userAdmin:
允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户;
userAdminAnyDatabase:
只在admin数据库中可用,赋予用户所有数据库的userAdmin权限;
root:
只在admin数据库中可用。超级账号,超级权限;
3、集群管理角色(admin数据库可用)
clusterAdmin 集群所有管理权限,是 clusterManager , clusterMonitor, hostManager 合集
clusterManager 集群管理和监控
clusterMonitor 集群监控,只读的
hostManager 监控和管理服务器
readAnyDatabase 读取所有数据库
readWriteAnyDatabase 读写所有数据库
userAdminAnyDatabase 所有数据库的 userAdmin 权限
dbAdminAnyDatabase 所有数据库的 dbAdmin 权限
更多预定于角色的信息请参看:
https://docs.mongodb.com/manual/core/security-built-in-roles/
show dbs
MongoDB没有创建数据库的命令,但有类似的命令。 如:如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection(‘user’)),这样就可以创建一个名叫“myTest”的数据库。
db.dropDatabase() #删除当前使用数据库
db.cloneDatabase("127.0.0.1") #将指定机器上的数据库的数据克隆到当前数据库
db.copyDatabase("mydb", "temp", "127.0.0.1") #将本机的mydb的数据复制到temp数据库中
db.repairDatabase() #修复当前数据库
db.getName() #查看当前使用的数据库,也可以直接用db
db.stats() #显示当前db状态
db.version() #当前db版本
db.getMongo() #查看当前db的链接机器地址
db.serverStatus() #查看数据库服务器的状态
二、配置访问控制
MongoDB安装完成后,数据库 admin 中没有任何用户账户。在数据库 admin 中没有任何账户时,MongoDB 向从本地主机发起的连接提供全面的数据库管理权限。因此配置 MongoDB 新实例时,首先需要创建
用户管理员账户
和
数据库管理员账户
。用户管理员账户可在 admin 和其他数据库中创建用户账户。您还需要创建一个数据库管理员账户,将其作为管理数据库、集群、复制和 MongoDB 其他方面的超级用户。
用户管理员账户和数据库管理员账户都是在数据库 admn 中创建的。在 MongoDB 服务器中启用身份验证后,要以用户管理员或数据库管理员的身份连接到服务器,必须向 admin 数据库验证身份,您还需在每个数据库中创建用户账户,让这些用户能够访问该数据库。
2、创建用户管理员账户
配置访问控制的第一步是创建用户管理员账户。用户管理员应只有创建用户账户的权限,而不能管理数据库或执行其他管理任务。这确保数据库管理和用户账户管理之间有清晰的界限。
在 admin 数据库中,添加一个用户并赋予
userAdminAnyDatabase
角色,
userAdminAnyDatabase
只在
admin
数据库中可用,赋予用户所有数据库的userAdmin权限。
例如,下面是在 admin 数据库中创建一个名为
myUserAdmin
用户。
[root@mbasic ~]