我已经建立了一个全新的分片 MongoDb(3 个配置服务器,3 个节点副本集)。按照网上的文档,真的没有任何问题。分片一个数据库和一个集合;mongos 连接到系统;一切正常。
我不了解的一件事是在分片系统中身份验证如何工作。我为所有 6 个节点设置了密钥文件。当我想添加一个用户时,我是从 mongos 做的吗?我是否必须登录到副本集中的每个节点并添加用户?我必须将用户添加到配置服务器吗?
特别是,我通过 mongos 创建了一个 MMS 用户,这允许 mms-monitoring-agent 连接到足以了解各种服务器的信息。但它实际上不能从其中任何一个中读取数据;我收到如下错误:
ask failure `serverStatus`. Err: `Failed command to mongoshard1:27017 running
[{serverStatus 1} {recordStats 0} {locks 0}] against DB admin.
Err: `not authorized on admin to execute command { serverStatus: 1, recordStats: 0, locks: 0 }`
当我通过 mongos 连接并使用管理员时;显示我看到的用户:
{
"_id" : "admin.mms",
"user" : "mms",
"db" : "admin",
"roles" : [
{
"role" : "readAnyDatabase",
"db" : "admin"
},
{
"role" : "clusterMonitor",
"db" : "admin"
}
]
}
我想我只是不了解用户需要添加到哪些实例。