首先到Mongo官網下載Windows版ZIP包https://www.mongodb.com/download-center/community,釋放到D:\MongoDB\bin,可能需要安裝VC2015運行環境,嫌麻煩可以裝MSI版本。
1、在MongoDB下新建data目錄,以及其下的目錄結構
D:\MongoDB
|-bin
|-data
|-cfg
|-db
|-rs1
|-rs2
|-rs3
|-log
2、在MongoDB\data\cfg下新建3個配置文件,內容如下
dbpath=D:\MongoDB\data\db\rs1
logpath=D:\MongoDB\data\log\rs1.log
journal=true
port=20010 #另外兩個分別改爲20020,20030
replSet=rs0
#keyFile=D:\MongoDB\data\cfg\keyfile
#可以用openssl命令生成keyfile,例如openssl rand -base64 -out d:\MongoDB\data\cfg\keyFile 765
#openssl下載地址http://gnuwin32.sourceforge.net/packages/openssl.htm
#openssl更多用法參與https://www.cnblogs.com/pluslius/p/9936327.html
3、註冊3個NT服務,分別使用3個不同配置
D:\MongoDB\bin\mongod --config "D:\MongoDB\data\cfg\rs1.cfg" --serviceName "MongoDB_01" --serviceDisplayName "MongoDB_01" --install
D:\MongoDB\bin\mongod --config "D:\MongoDB\data\cfg\rs2.cfg" --serviceName "MongoDB_02" --serviceDisplayName "MongoDB_02" --install
D:\MongoDB\bin\mongod --config "D:\MongoDB\data\cfg\rs3.cfg" --serviceName "MongoDB_03" --serviceDisplayName "MongoDB_03" --install
4、從客戶端進入並設置主從節點
mongo --port 20010
rs.initiate()
rs.conf()
rs.add("localhost:20020") #從節點
rs.addArb("localhost:20030") #仲裁節點
#查看狀態
rs.status()
#退出主節點,進從節點
mongo --port 20020
#同步,允許從節點讀寫
rs.slaveOk()
5、建立驗證
#在主節點創建用戶名
mongo --port 20010
#創建用戶(MongoDB中內置了很多角色)
#role:表示角色,db:表示當前角色針對哪個數據庫有效。
#比如設置了admin 那麼這個用戶的權限範圍只在admin數據庫有效。
use admin
db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "root", db: "admin" } ]
}
)
#然後我們可以給具體的數據裏設置授權用戶了(用戶名密碼可以自己搞個複雜點的)
use vad_db
db.createUser({
"user" : "mydbuser",
"pwd": "abc123",
"roles" : [
{role: "readWrite", db: "mydb" }
]},
{ w: "majority" , wtimeout: 5000 }
)
#停止所有的服務,注意順序,防止主庫變更
net stop MongoDB_03
net stop MongoDB_02
net stop MongoDB_01
#修改配置文件中的keyFile項去註釋,再重啓服務
net start MongoDB_01
net start MongoDB_02
net start MongoDB_03
6、使用KeyFile開啓複製集驗證(自動開啓安全驗證)
#連接到主節點(mongo --port 20010 -u admin -p admin)
show dbs #不帶用戶密碼參數啓動時應該無反應,或提示無權限
use admin #不帶用戶密碼參數啓動時用db.auth驗證
db.auth("admin", "admin")
show dbs #這時應該正常顯示庫列表