標籤:資料庫 MongoDB
replica set許可權認證
要生一個keyfile檔案,用於節點之間許可權認證的
mkdir -p /mnt/mongodb/rs/config
cd /mnt/mongodb/rs/config
openssl rand -base64 741 > mongodb-keyfile
chmod 300 mongodb-keyfile
官網上的是600的,必須要改為300,如果不是的話, 會在啟動的時候mongodb.log裡寫入權限太開放的原因導致啟動mongodb失敗!(這裡先確保你已經安裝了openssl,如果沒有裝,yum install openssl)
將mongodb-keyfile複製到每一個節點對應的目錄下,如果之前已經啟動的mongodb的話,用mongo進入到終端後,先查看那個節點是主節點,rs.status(); 去到主節點下執行:
use admin #選擇需要認證的資料
db.addUser('name','password');
當然,也可以某一個自建的庫進行許可權認證
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就能效率與安全兼備了。
MongoDB repl set許可權認證配置步驟