我們創建了 3 個分片,每個分片有 2 個副本,mongodb 版本為 3.6.21。然后我們在不同節點的每個分片的主節點中創建具有 root 權限的 admin 用戶。我們可以使用 user/pass auth 直接登錄到 mongod 服務。現在我們想在應用程式 dB 上啟用分片,為此我們使用以下命令。
[root@MONGODB01 ~]# mongo --port 27017
MongoDB shell version v3.6.21
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("45c58424-422c-4a73-9d18-027718aa0a36") }
MongoDB server version: 3.6.21
mongos> use dsyh_mongo
switched to db dsyh_mongo
mongos> sh.enableSharding("dsyh_mongo")
{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { enableSharding: \"dsyh_mongo\", lsid: { id: UUID(\"45c58424-422c-4a73-9d18-027718aa0a36\") }, $clusterTime: { clusterTime: Timestamp(1634624354, 1), signature: { hash: BinData(0, 3F3BBFE3DD659B7E0FAEE493345496D9DAB9B2A4), keyId: 7020363352299798554 } }, $db: \"admin\" }",
"code" : 13,
"codeName" : "Unauthorized",
"operationTime" : Timestamp(1634624352, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1634624354, 1),
"signature" : {
"hash" : BinData(0,"Pzu/491lm34PruSTNFSW2dq5sqQ="),
"keyId" : NumberLong("7020363352299798554")
}
}
}
但我們正面臨上述錯誤。這里 mongos 在埠 27017 上運行,mongodb 在同一臺服務器上的埠 37017 上運行 請指出這里出了什么問題,因為我們之前可以使用類似的步驟?
uj5u.com熱心網友回復:
我假設您將“普通”用戶和“分片本地”用戶混合使用。從我在評論中提供的教程:
用戶
通常,要為分片集群創建用戶,請連接到
mongos并添加分片集群用戶。但是,某些維護操作需要直接連接到分片集群中的特定分片。要執行這些操作,您必須直接連接到分片并以分片本地管理用戶的身份進行身份驗證。
Shard-local 用戶只存在于特定的分片中,應該只用于特定分片的維護和配置。您無法連接到
mongos帶有分片本地的用戶。
或查看分片集群用戶
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326762.html
上一篇:轉換mongo陣列
