replica set權限認證mongodb
要生一個keyfile文件,用於節點之間權限認證的安全
mkdir -p /mnt/mongodb/rs/config ide
cd /mnt/mongodb/rs/config spa
openssl rand -base64 741 > mongodb-keyfile ssl
chmod 300 mongodb-keyfile get
官網上的是600的,必需要改成300,若是不是的話, 會在啓動的時候mongodb.log裏寫權限太開放的緣由致使啓動mongodb失敗!(這裏先確保你已經安裝了openssl,若是沒有裝,yum install openssl)openssl
將mongodb-keyfile複製到每個節點對應的目錄下,若是以前已經啓動的mongodb的話,用mongo進入到終端後,先查看那個節點是主節點,rs.status(); 去到主節點下執行:it
use admin #選擇須要認證的數據 base64
db.addUser('name','password'); ast
固然,也能夠某一個自建的庫進行權限認證
use test1
db.addUser('test','123456');
提示添加成功後,所有中止,每一節點執行db.shutdownServer();而後對mongod.conf文件添加如下兩行:
auth=true
keyFile=/mnt/mongodb/rs/confile/mongodb-keyfile
最後所有重啓便可!
進入主節點終端,輸入
db.runCommand({getLastError:1, w: N});
若是沒有N,或者小於2,命令就會馬上返回,若是N等於2,主節點要等到至少一個從節點複製了上個操做都會響應命令(主節點自己也包括在N裏面)。主節點使用local.slaves中存放的"syncedTo"信息來跟蹤從節點的更新狀況。
當指定"w"選項後,還可使用"wtimeout"選項,表示以毫秒爲單位的超時。getLastError就能在上一個操做複製到N個節點超時時返回錯誤(默認狀況下命令是沒有超時的)。
阻塞複製會致使寫操做明顯變慢,尤爲是"w"的值比較大時。實際上,對於重要的操做將其值設置爲2或者3就能效率與安全兼備了。