[英]How to initiate authentication for replica set - MongoDB
沒有身份驗證的副本集。 我想第一次創建它的身份驗證。
我做如下:
1- create [administrator user][1]
2- restarting all member with option `auth=true`
3- login as aadministrator to one member of replica set
4- trying to create user "db.addUser(...)"
但是當我想創建用戶時,它拋出了couldn't add user: not master at src/mongo/shell/db.js:128
異常couldn't add user: not master at src/mongo/shell/db.js:128
我該怎么辦? 是否可以在現有副本集中啟動安全性或者我應該在設置身份驗證后刪除副本集並重建它。
如果副本集已存在,則需要查找主節點,添加具有“root”角色的用戶,並為每個數據庫添加具有admin / writeAndRead / read角色的用戶,和/或為所有數據庫添加admin用戶。
use admin
db.createUser({ user: "rootUser", pwd: "rootPass", roles: [ { role: "root", db: "admin" } ] })
db.createUser({ user: "admin", pwd: "adminPass", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })
use otherDb
db.createUser({ user: "rwUser", pwd: "rwUserPass", roles: [{ role: "readWrite", db: "otherDb" }] })
等到同步所有副本節點。 在每個mongod.conf文件上設置auth = yes(這將強制每個客戶端使用user / pass)。
如果您需要(不需要),添加keyFile以在所有副本集之間強制執行額外的安全步驟,您可以創建此文件,在每個節點之間復制並在每個mongod.conf文件中啟用keyFile選項,但這只是強制副本集節點知道它們之間的秘密並開始說話,而不是客戶端應用程序。
最后重啟主節點等待新的主要選舉並繼續重新啟動副本集內的所有節點。
幾個有用的鏈接用於創建密鑰文件http://docs.mongodb.org/v2.6/tutorial/deploy-replica-set-with-auth/#create-the-key-file-to-be-used- by-each-of-the-replica-set和mongodb v2.6版本的更多細節http://docs.mongodb.org/v2.6/tutorial/deploy-replica-set-with-auth/#創建最密鑰文件將要使用的逐各部件的最副本集
由於您正在配置replicaSet,我認為您需要使用keyFile選項而不是auth = Yes。 一旦啟用了身份驗證,這將允許replicaSet中的節點相互通信。
檢查此文檔。 http://docs.mongodb.org/manual/tutorial/enable-authentication
雖然副本集存在,但它不是主服務器或主服務器沒有設置。 你可能還沒有init副本集。
https://docs.mongodb.com/manual/tutorial/deploy-replica-set/
> rs.initiate()
> rs.add("secondary-host:27017")
> rs.add("more-hosts-if-exist:27017")
然后你可以創建用戶。
> db.createUser({ user: "root", pwd: "rootpw", roles: [ { role: "root", db: "admin" } ] })
> db.createUser({user: "useradmin", pwd: "adminpw", roles: [ { role: "userAdmin", db: "admin" } ] })
就像@Aaron Castro的回答一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.