Mongodb带验证的主从复制架构
先說幾個關(guān)于mongodb的使用命令:
????1.創(chuàng)建用戶????db.addUser('username','password');
????2.查詢當(dāng)前庫中用戶信息 ?db,system.users.find();?
????3.進(jìn)入響應(yīng)數(shù)據(jù)庫????use databaseName;
????4.顯示當(dāng)前數(shù)據(jù)庫所有庫的大小信息 show dbs;
????5.顯示當(dāng)前庫的所有表信息 show collections;
????6.對數(shù)據(jù)進(jìn)行用戶驗證 db.auth('username','password');
????7.創(chuàng)建表?db.createCollection('test');
????8.關(guān)閉數(shù)據(jù)的時候不要使用kill -9 的方式進(jìn)行關(guān)閉數(shù)據(jù)庫,這樣會導(dǎo)致數(shù)據(jù)的破壞,關(guān)閉方法有兩種,如下:
方法一:
| 1 2 3 4 | #進(jìn)入admin數(shù)據(jù)庫 use?admin; #執(zhí)行關(guān)閉數(shù)據(jù)庫命令 db.shutdownServer(); |
方法二:
| 1 2 3 4 | #過濾出進(jìn)程ID netstat?-ntpl?|?grep?port #使用-15的方式進(jìn)行殺掉進(jìn)程 kill?-15?ID |
講一個話外題,不感興趣的同學(xué)可以略過,直接next了
????比如你創(chuàng)建了一個用戶,權(quán)限只能看test庫,當(dāng)你使用mongodb mv管理軟件且使用管理員的帳號連接上后,你會神奇的發(fā)現(xiàn)帳號test庫并不顯示,原因在于此數(shù)據(jù)庫中沒有任何的數(shù)據(jù),當(dāng)你使用第七條命令創(chuàng)建了一個表后,神奇的事情發(fā)生了,test這個數(shù)據(jù)庫出現(xiàn)了
回歸正題
????關(guān)于mongodb的主從復(fù)制
????? ? ?不帶賬戶驗證的主從復(fù)制
????? ??????? ? 此種方案非常好理解,且操作簡單,但是使用起來不安全。操作步驟大概如下:
??????????????????系統(tǒng)環(huán)境介紹:Ubuntu 12.04.1 、MongoDB shell version: 2.6.1
???????????????????? 啟動的時候 只需要指定master和slave就可以了如下:
?????????????????????? ?
| 1 | mongod?--dbpath=/usr/local/mongodb/data/mongodb_27017/?--fork?--logpath=/var/log/mongod.log?--port?27017?--master |
| 1 | mongod?--dbpath=/usr/local/mongodb/data/mongodb_27018/?--fork?--logpath=/var/log/mongod27018.log?--port?27018?--slave?--source=127.0.0.1:2701 |
?????????帶賬戶驗證的主從復(fù)制
?????????????????此種方案就有點(diǎn)麻煩了,mongodb的官方文檔注明了,需要使用一個keyfile的關(guān)鍵字進(jìn)行數(shù)據(jù)同步,僅僅是喲過--auth是不行的。操作步驟大概如下:
????????????????????????系統(tǒng)環(huán)境介紹:Ubuntu 12.04.1 、MongoDB shell version: 2.6.1
?????????????????????????????步驟一、首先要進(jìn)入admin庫設(shè)置一個admin的賬號,此賬號為管理員帳號,對所有庫都具有增刪改查的權(quán)限,操作步驟如下:
| 1 2 3 | mongo?--host?=?127.0.0.1:27017 use?admin; db.addUser('admin','admin'); |
????????????????????????????步驟二、停掉現(xiàn)有的mongodb,然后使用如下參數(shù)啟動,測試admin賬戶是否正確
| 1 2 3 4 | mongod?--dbpath=/usr/local/mongodb/data/mongodb_27017/?--fork?--logpath=/var/log/mongod.log?--port?27017?--auth mongo?--host?=?127.0.0.1:27017 use?admin; db.auth('admin','admin'); |
????????????????????????????步驟三、在slave上同樣的操作步驟,進(jìn)行設(shè)置slave的admin帳號并驗證(切記如果主從在同一臺機(jī)器上不要,使用了同一個端口,)
????????????????????????????步驟四、停到主從,然后生成key文件。步驟如下:
| 1 | openssl?rand?-base64?741?>?/root/mongo-keyfile |
?會在root的宿主目錄下生成一個文件mongo-keyfile文件 ll一下,看一下此文件大小,我第一次生成的時候文件大小為0,導(dǎo)致啟動的時候失敗
????????????????????????????第五步、啟動主從兩個mongo。步驟如下
| 1 2 | mongod?--dbpath=/usr/local/mongodb/data/mongodb_27017/?--fork?--logpath=/var/log/mongod.log?--port?27017?--auth?--master?--keyFile?/root/mongo-keyfile? mongod?--dbpath=/usr/local/mongodb/data/mongodb_27018/?--fork?--logpath=/var/log/mongod27018.log?--port?27018?--slave?--source=127.0.0.1:27017?--auth?--keyFile?/root/mongo-keyfile |
這樣當(dāng)操作主的時候 從自然也會跟著變化了
關(guān)于mongodb的賬號設(shè)置管理與非管理員設(shè)置
????????????? ?上面已經(jīng)闡述了關(guān)于創(chuàng)建 “管理員”賬號的操作方法,此處不就在闡述,如下內(nèi)容闡述如何????????創(chuàng)建普通用戶權(quán)限
創(chuàng)建logdb庫的普通用戶,這個用戶只可以操作本數(shù)據(jù)庫,代碼如下
| 1 2 3 4 5 6 | #創(chuàng)建一個可讀寫賬戶 use?logdb; db.addUser('username','password'); #創(chuàng)建一個只讀賬戶 use?logdb; db.addUser('username','password',true) |
本文轉(zhuǎn)自 xinsir999 51CTO博客,原文鏈接:http://blog.51cto.com/xinsir/1732416,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的Mongodb带验证的主从复制架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flypods值得买吗
- 下一篇: powerdesigner奇淫技