1. 程式人生 > >MongoDB資料備份與恢復以及安全認證

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資料庫中進行管理員安全認證,管理員可以操作任何資料做任何操作,如下所示:
在這裡插入圖片描述