mongodb3.0分區及java代碼串連操作測試(開啟使用者驗證)

來源:互聯網
上載者:User

標籤:

最近抽時間搭建了一下mongodb簡單的分區,整個過程還算是蠻順利,只不過在使用者驗證這一塊遇到了一些問題,好在最後終於搞定。
一、伺服器搭建過程:
1、安裝四個mongodb:一個作為config、一個作為mongos、另外兩個作為主要資料存放區的伺服器(機器ip192.168.0.201),

分別對應圖中被紅框框起來的mongoconf、mongos、mongo1、mongo2(解壓安裝,安裝過程省略)。
2、分別建立data、conf、logs檔案夾,並在logs檔案夾下建立mongodb.log檔案,在conf中建立mongodb.conf(啟動配置參數)檔案。mongoconf中conf檔案內容如下:
dbpath=/home/admin/mongoconf/datalogpath=/home/admin/mongoconf/logs/mongodb.loglogappend=truefork=trueport=30000

mongos中conf檔案內容個如下(與上邊相比少了dbpath的指定):
logpath=/home/admin/mongos/logs/mongodb.loglogappend=truefork=trueport=40000

mongo1中conf內容如下(和mongoconf中基本一樣,只是路徑指向的是自己的):
dbpath=/home/admin/mongo1/datalogpath=/home/admin/mongo1/logs/mongodb.loglogappend=truefork=trueport=37117

mongo2中的conf也是一樣,只是把mongo1改為mongo2(省略)。
3、依次啟動mongoconf、mongos和mongo1、mongo2:啟動mongoconf,在bin目錄下執行mongod命令:
./mongod -f ../conf/mongodb.conf

啟動mongos,在bin目錄下執行mongos命令:
./mongos -f ../conf/mongodb.conf --configdb=192.168.0.201:30000

啟動mongo1和mongo2,在各自的bin目錄中執行mongod命令:
./mongod -f ../conf/mongodb.conf

4、串連mongos伺服器,並添加分區:  (1)、串連mongos:在任意一個mongodb的bin目錄執行如下命令:      
./mongo 192.168.0.201:40000/admin

  (2)、進入mongos後添加mongo1和mongo2位分區資料服務器:       
db.runCommand({"addshard":"192.168.0.201:37117"})db.runCommand({"addshard":"192.168.0.201:47117"})
   
5、開啟分區:  
db.runCommand({"enablesharding":"test"})db.runCommand({"shardcollection":"test.user","key":{"name":1}})


6、測試:向test資料庫的user表中添加10w條資料:
use testfor(var i=0;i<100000;i++){    db.user.insert({"name":"test"+i,"age":i});}


7、查看分區結果:
db.printShardingStatus()


二、開啟使用者驗證:
1、切換資料庫到admin建立root使用者:
 db.createUser({"user":"root","pwd":"123456","roles":["root"]})


 再切換到test資料庫建立讀寫權限的使用者(非admin資料庫中無法建立叢集管理相關的使用者): 
db.createUser({"user":"test","pwd":"123456","roles":[{"db":"test","role":"readWrite"},"readWrite"]})


2、退出mongo shell,建立keyFile(檔案名稱可自取)檔案,並賦予600許可權,必須要600許可權:  進入到mongo1的data目錄下執行如下命令:
openssl rand -base64 753 > keyFilechmod 600 keyFile


3、把產生的keyFile檔案拷貝到其他幾個mongodb的data目錄中:

4、修改mongodb.conf啟動設定檔:除開mongos之外,其他都加上如下內容(開啟使用者驗證和keyFile驗證):
auth=truekeyFile=/home/admin/mongo2/data/keyFile

mongos中沒有auth參數,只需要keyFile。
5、重新依次啟動mongoconf、mongos和mongo1、mongo2(參考上邊的啟動說明);
三、java代碼串連測試:
1、java串連代碼如下:
public class MonTest {    public static void main(String[] args) {        mongodbfind2();    }   public static void mongodbfind2() {        ServerAddress sa = new ServerAddress("192.168.0.201", 40000);        List<MongoCredential> mongoCredentialList = new ArrayList<MongoCredential>();        mongoCredentialList.add(MongoCredential.createCredential("test", "test", "123456".toCharArray()));        MongoClient client = new MongoClient(sa, mongoCredentialList);        MongoDatabase database = client.getDatabase("test");        // ********        MongoCollection collection2 = database.getCollection("user");        FindIterable<Document> findIterable = collection2.find();        MongoCursor<Document> cursor2 = findIterable.iterator();        while (cursor2.hasNext()) {            Document doc = cursor2.next();            System.out.println(doc.get("_id") + "," + doc.get("name") + "," + doc.get("age"));        }        // 關閉資料庫連接        client.close();    }}

2、運行結果:

收工完成!







mongodb3.0分區及java代碼串連操作測試(開啟使用者驗證)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.