說明:
MongoDB副本集就是shard,所以配置是一樣的,如果只是單機的MongoDB,連keyfile文件都不需要,只需要配置auth=true即可。所以好好看一下下面的例子,你應該就可以明白MongoDB應該如何設置密碼驗證了!
MongoDB分片集群設置密碼驗證
創建keyfile秘鑰文件
#MongoDB集群中的每一個實例彼此連接時都會檢驗彼此證書是否相同,只有相同的實例彼此才可以訪問。
openssl rand -base64 512 > mongodb.key
chmod 400 mongodb.key
將密碼復制到集群的每台設備的指定位置
就假如我們的指定位置是/usr/local/mongodb/下
scp mongodb.key root@IP地址:/usr/local/mongodb/
連接任意一台mongos創建用戶
./mongo IP地址:[mongos端口]
> use admin > db.createUser({ //集群管理賬號 "user":"admin", "pwd":"admin888", "roles":[{ role:"root", db:"admin" ]} }) > use testdb //客戶端賬號 > db.createUser({ "user":"user", "pwd":"user888", "roles":[{ role:"dbOwner", db:"testdb" ]} })
MongoDB用戶角色問題可以參考我之前寫的MongoDB用戶和角色說明。
配置密碼認證
config Server的配置文件
#新增下列兩項
keyFile=/usr/local/mongodb/mongodb.key auth=true
修改完成后,重啟config Server,先重啟secondary,最后再重啟primary。
shard同config Server一樣。
mongos則是沒有auth這個選項,只需要配置keyFile驗證即可。
全部重啟完成后,驗證
#連接任意一台mongos
./mongo IP地址:[mongos端口]
> use admin > db.auth("admin","admin888") //不登錄是無法操作MongoDB的
至此,MongoDB的密碼認證就配置完成了!