面试题答案
一键面试- 开启身份验证:
- 在每个MongoDB实例(config server、shard server、mongos)的配置文件(通常是
mongod.conf
)中添加或修改以下配置来开启身份验证:
security: authorization: enabled
- 重启MongoDB服务使配置生效。例如,在Linux系统下,对于mongod服务可以使用
sudo systemctl restart mongod
,对于mongos服务可以使用sudo systemctl restart mongos
。
- 在每个MongoDB实例(config server、shard server、mongos)的配置文件(通常是
- 创建管理员用户:
- 连接到MongoDB的admin数据库。如果是分片集群,连接到其中一个mongos实例:
mongo --host <mongos_host>:<mongos_port> -u <admin_username> -p <admin_password> --authenticationDatabase admin
- 使用以下命令创建管理员用户,该用户具有
root
角色,拥有最高权限:
use admin db.createUser({ user: "adminUser", pwd: "adminPassword", roles: [ { role: "root", db: "admin" } ] });
- 创建普通用户并分配角色:
- 连接到需要操作的数据库(例如
testDB
):
mongo --host <mongos_host>:<mongos_port> -u adminUser -p adminPassword --authenticationDatabase admin use testDB
- 创建普通用户并分配角色。例如,创建一个具有
readWrite
角色的用户:
db.createUser({ user: "testUser", pwd: "testPassword", roles: [ { role: "readWrite", db: "testDB" } ] });
- 连接到需要操作的数据库(例如
- 客户端连接验证:
- 普通用户连接:
mongo --host <mongos_host>:<mongos_port> -u testUser -p testPassword --authenticationDatabase testDB
- 管理员用户连接:
mongo --host <mongos_host>:<mongos_port> -u adminUser -p adminPassword --authenticationDatabase admin
在配置RBAC时,需注意不同角色的权限范围,根据实际需求谨慎分配,确保数据库的安全性和用户操作的便利性。同时,连接字符串中的主机和端口需根据实际的分片集群配置填写。