mongodb的用戶認證&&備份遷移


准備階段 :

 

查詢數據庫:  show dbs

進入數據庫: use MYDB

查詢數據庫中表: show tables

在mongo中創建新的用戶 並賦予相應權限:

db.createUser({

user:<name_string>,                   #字符串

pwd:<password_string>, #字符串

roles:[{role:<role_name>,db:<db_name>}]     #數組+對象

})

user文檔字段介紹:
    user字段,為新用戶的名字;
    pwd字段,用戶的密碼;
    cusomData字段,為任意內容,例如可以為用戶全名介紹;
    roles字段,指定用戶的角色,可以用一個空數組給新用戶設定空角色;
    在roles字段,可以指定內置角色和用戶定義的角色。

Built-In Roles(內置角色):

  1. 數據庫用戶角色:read、readWrite;

  2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;

  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

  4. 備份恢復角色:backup、restore;

  5. 所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

  6. 超級用戶角色:root 
    // 這里還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)

  7. 內部角色:__system

舉例:給admin添加一個root用戶

use admin

db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})

mongodb.conf文件中加入 auth=true

驗證用戶

use admin

db.auth("admin","123456")

刪除用戶

db.dropUser(<user_name>)    刪除某個用戶,接受字符串參數

db.dropAllUser()             刪除當前庫的所有用戶

注意:  在mongo4.0版本中 配置用戶認證需要在mongod.cfg中

security:
authorization: enabled

重新啟動服務: mongod -f "C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg"

數據庫遷移 :

  1. 使用mongo自帶命令來進行遷移數據庫,先導出集合數據再導入數據庫中

    數據導出:mongoexport -d dbname -c collectionname -o filepath --type json/csv -f field

    數據導入:mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field

  2. 連接遠程mongodb備份導入導出

    連接遠程數據庫:mongo -u username -p pwd host:post/database(數據庫名)

    注:當該用戶有相應權限時,可以查看collection==>查看集合命令:show collections

    備份導出:mongodump -h dbhost -d dbname -o dbdirectory

    備份恢復:mongorestore -h dbhost -d dbname dbdirectory

  3. 可視化工具遷移

    詳細步驟:https://jingyan.baidu.com/article/63f236287e91c40208ab3d11.html

    1. 注意:設置用戶認證后需要:先連接進入mongo -u admin -p 123456 127.0.0.1:17072/admin

     

遷移到阿里雲上:

#mongodump的具體命令請參考mongo的幫助文檔
mongodump -h [源MongoDb地址,比如:10.10.10.10:27017] -d [需要下載的數據庫名]

mongorestore --host [上圖中查得的地址] --authenticationDatabase admin -u root

詳細步驟 :https://help.aliyun.com/document_detail/26625.html

數據導出:

mongoexport -d dbname -c collectionname -o filepath --type json/csv - field

-d:數據庫名

-c:集合名稱

-o : 導出數據文件的路徑

-type : 導出數據類型,默認json

數據導出:

mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field

-d:數據庫名

-c:集合名稱

--file : 選擇導入的文件

-type : 文件類型,默認json

-f : 字段,type為csv是必須設置此項

數據備份:

mongodump -h dbhost -d dbname -o dbdirectory

例如 : mongodump -h 127.0.0.1:17072 -d mydb -o C:\Users\91178 

-h:MongDB所在服務器地址,例如:127.0.0.1

-d:需要備份的數據庫實例

-o:備份的數據存放目錄,系統自動在轉儲目錄下建立一個備份的數據庫名稱的目錄,這個目錄里面存放該數據庫實例的備份數據

數據庫恢復:

mongorestore -h dbhost -d dbname dbdirectory

例如:mongorestore -h 127.0.0.1:17072 -d mydb  \Users\91178\dncloud\

(在網上搜索到的都是 mongorestore -h dbhost -d dbname  -directoryperdb  dbdirectory)

-h:MongoDB中的所在服務器地址

-d:需要恢復的數據庫實例

-directoryperdb:備份數據所在位置

 

 

數據備份恢復實例:

 

1.首先在阿里雲服務器上備份mongodb的數據(將阿里雲服務器的數據庫數據備份成JSON文件)

mongodump -h 127.0.0.1 -d FbGameData -o /usr/

2.查看備份的文件(查看備份成功的文件夾內容)

cd /usr/FbGameData

3.將備份文件夾打包壓縮

tar -zcvf FbGameData.tar.gz FbGameData

4.本地SCP拉取服務器備份文件壓縮包 (跨主機傳輸文件)

scp root@47.92.215.62:/usr/FbGameData.tar.gz ./

5.解壓縮(省略)然后恢復數據(前提是要在本地創建同名數據庫)

mongorestore -h 127.0.0.1 -d FbGameData  ./FbGameData /

 

排坑

  1. 在mongod.conf 中開啟用戶認證后, 如果不加--authenticationDatabase admin 會報認證錯誤

    mongodump --port=17072 -uadmin -p123456 --db=dncloud -o C:\Users\91178 --authenticationDatabase admin

    mongorestore --port=17072 -uadmin -p123456 -dmydb  \Users\91178\dncloud\ --authenticationDatabase admin
    查看數據庫占用磁盤大小: mongo admin --eval "printjson(db.runCommand({"listDatabases":1}))

添加用戶權限:

use admin

db.auth("username","password")

db.createUser({

user:"11111111"

pwd:"2222"

roles:[{role:"root",db:"admin"}]

})

show users

任務管理器中啟動mongdb


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM