MongoDB資料備份與恢復以及安全認證
與其他資料庫一樣,MongoDB提供了資料備份和恢復以及資料匯入匯出的功能,在MongoDB安裝目錄的bin目錄下有,有以下exe檔案,下面我們主要使用這些工具:
一、資料備份與恢復
資料的備份與恢復主要使用到mongodump.exe和mongorestore.exe這兩個工具。
資料備份
mongodump -h dbhost -d dbname -o dbdirectory -h:MongDB所在伺服器地址,例如:127.0.0.1,當然也可以指定埠號:127.0.0.1:27017 -d:需要備份的資料庫例項,例如:test -o:備份的資料存放位置,例如:c:\data\dump,當然該目錄需要提前建立,在備份完成後,系統自動在dump目錄下建立一個test目錄,這個目錄裡面存放該資料庫例項的備份資料。 #例項: mongodump -h localhost -d test -o F:\BaiduNetdiskDownload\bak
執行上面命令備份test資料庫到F:\BaiduNetdiskDownload\bak目錄下,結果如下所示:
資料的恢復
mongorestore -h dbhost -d dbname -directoryperdb dbdirectory
-h:MongoDB所在伺服器地址
-d:需要恢復的資料庫例項,例如:test,當然這個名稱也可以和備份時候的不一樣,比如test2
-directoryperdb:備份資料所在位置,例如:c:\data\dump\test
資料的匯出
mongoexport -h dbhost -d dbname -c collectionName -o output 引數說明: -h 資料庫地址 -d 指明使用的庫 -c 指明要匯出的集合 -o 指明要匯出的檔名
例項:
mongoexport -h localhost -d test -c t1 -o F:\BaiduNetdiskDo
wnload\export\t1.txt
匯出test資料庫中的t1集合,結果如下:
匯出資料格式如下:
需要注意的是:dump出的資料是bson的二進位制資料,export的資料是可讀的json資料格式。
資料的匯入
命令如下:
mongoimport -h dbhost -d dbname -c collectionname output
引數說明:
-h 資料庫地址
-d 指明使用的庫
-c 指明要匯入的集合
二、安全認證
每個MongoDB例項可以新增多個使用者。如果開啟了安全認證,則只有資料庫認證的使用者才有讀寫資料庫的許可權。在認證的上下文中,admin資料庫中的使用者被視為超級使用者(即管理員)。在認證之後,管理員可以讀寫所有資料庫,執行特定的管理命令,如listDatabases和shutdown。在開啟安全檢查之前,一定要至少有一個管理員賬號。
首先進入admin資料庫中,可以使用addUser命令新增admin使用者:
> db.addUser("root","root")
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
結果如下,新增管理員成功:
進入test資料庫,新增普通使用者:
> use test
switched to db test
> db.addUser("shinelon","123456")
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "shinelon", "roles" : [ "dbOwner" ] }
> db.addUser("lisi","123456",true) #true表示只讀,該使用者只有讀許可權
此時,我們已經添加了一個管理員和一個普通使用者,這時可以開啟安全認證,先退出此次服務。
重新啟動MongoDB伺服器,使用下面命令開啟安全檢查:
mongod --dbpath d:\mongo_data --auth
如果你是使用配置檔案啟動,可以在配置檔案中新增:
auth=true
增加安全認證,然後啟動mongodb客戶端。
當連線了客戶端後,只能使用db命令檢視在哪個資料庫中,沒有執行其他命令的許可權,可以使用db.auth命令來通過安全認證,如下所示:
也可以進入admin資料庫中進行管理員安全認證,管理員可以操作任何資料做任何操作,如下所示: