天天看點

Mongodb帶驗證的主從複制架構

先說幾個關于mongodb的使用指令:

    1.建立使用者    db.addUser('username','password');

    2.查詢目前庫中使用者資訊  db,system.users.find(); 

    3.進入響應資料庫    use databaseName;

    4.顯示目前資料庫所有庫的大小資訊 show dbs;

    5.顯示目前庫的所有表資訊 show collections;

    6.對資料進行使用者驗證 db.auth('username','password');

    7.建立表 db.createCollection('test');

    8.關閉資料的時候不要使用kill -9 的方式進行關閉資料庫,這樣會導緻資料的破壞,關閉方法有兩種,如下:

方法一:

1

2

3

4

<code>#進入admin資料庫</code>

<code>use admin;</code>

<code>#執行關閉資料庫指令</code>

<code>db.shutdownServer();</code>

方法二:

<code>#過濾出程序ID</code>

<code>netstat</code> <code>-ntpl | </code><code>grep</code> <code>port</code>

<code>#使用-15的方式進行殺掉程序</code>

<code>kill</code> <code>-15 ID</code>

講一個話外題,不感興趣的同學可以略過,直接next了

    比如你建立了一個使用者,權限隻能看test庫,當你使用mongodb mv管理軟體且使用管理者的帳号連接配接上後,你會神奇的發現帳号test庫并不顯示,原因在于此資料庫中沒有任何的資料,當你使用第七條指令建立了一個表後,神奇的事情發生了,test這個資料庫出現了

回歸正題

    關于mongodb的主從複制

         不帶賬戶驗證的主從複制

                此種方案非常好了解,且操作簡單,但是使用起來不安全。操作步驟大概如下:

                  系統環境介紹:Ubuntu 12.04.1 、MongoDB shell version: 2.6.1

                     啟動的時候 隻需要指定master和slave就可以了如下:

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27017/</code> <code>--fork --logpath=</code><code>/var/log/mongod</code><code>.log --port 27017 --master</code>

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27018/</code> <code>--fork --logpath=</code><code>/var/log/mongod27018</code><code>.log --port 27018 --slave --</code><code>source</code><code>=127.0.0.1:2701</code>

         帶賬戶驗證的主從複制

                 此種方案就有點麻煩了,mongodb的官方文檔注明了,需要使用一個keyfile的關鍵字進行資料同步,僅僅是喲過--auth是不行的。操作步驟大概如下:

                        系統環境介紹:Ubuntu 12.04.1 、MongoDB shell version: 2.6.1

                             步驟一、首先要進入admin庫設定一個admin的賬号,此賬号為管理者帳号,對所有庫都具有增删改查的權限,操作步驟如下:

<code>mongo --host = 127.0.0.1:27017</code>

<code>db.addUser(</code><code>'admin'</code><code>,</code><code>'admin'</code><code>);</code>

                            步驟二、停掉現有的mongodb,然後使用如下參數啟動,測試admin賬戶是否正确

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27017/</code> <code>--fork --logpath=</code><code>/var/log/mongod</code><code>.log --port 27017 --auth</code>

<code>db.auth(</code><code>'admin'</code><code>,</code><code>'admin'</code><code>);</code>

                            步驟三、在slave上同樣的操作步驟,進行設定slave的admin帳号并驗證(切記如果主從在同一台機器上不要,使用了同一個端口,)

                            步驟四、停到主從,然後生成key檔案。步驟如下:

<code>openssl rand -base64 741 &gt; </code><code>/root/mongo-keyfile</code>

 會在root的宿主目錄下生成一個檔案mongo-keyfile檔案 ll一下,看一下此檔案大小,我第一次生成的時候檔案大小為0,導緻啟動的時候失敗

                            第五步、啟動主從兩個mongo。步驟如下

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27017/</code> <code>--fork --logpath=</code><code>/var/log/mongod</code><code>.log --port 27017 --auth --master --keyFile </code><code>/root/mongo-keyfile</code> 

<code>mongod --dbpath=</code><code>/usr/local/mongodb/data/mongodb_27018/</code> <code>--fork --logpath=</code><code>/var/log/mongod27018</code><code>.log --port 27018 --slave --</code><code>source</code><code>=127.0.0.1:27017 --auth --keyFile </code><code>/root/mongo-keyfile</code>

這樣當操作主的時候 從自然也會跟着變化了

關于mongodb的賬号設定管理與非管理者設定

               上面已經闡述了關于建立 “管理者”賬号的操作方法,此處不就在闡述,如下内容闡述如何        建立普通使用者權限

建立logdb庫的普通使用者,這個使用者隻可以操作本資料庫,代碼如下

5

6

<code>#建立一個可讀寫賬戶</code>

<code>use logdb;</code>

<code>db.addUser(</code><code>'username'</code><code>,</code><code>'password'</code><code>);</code>

<code>#建立一個隻讀賬戶</code>

<code>db.addUser(</code><code>'username'</code><code>,</code><code>'password'</code><code>,</code><code>true</code><code>)</code>

本文轉自 xinsir999 51CTO部落格,原文連結:http://blog.51cto.com/xinsir/1732416,如需轉載請自行聯系原作者