准備階段 :
查詢數據庫: 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(內置角色):
-
數據庫用戶角色:read、readWrite;
-
數據庫管理角色:dbAdmin、dbOwner、userAdmin;
-
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
-
備份恢復角色:backup、restore;
-
所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
-
超級用戶角色:root
// 這里還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase) -
內部角色:__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"
數據庫遷移 :
-
使用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
-
連接遠程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
-
可視化工具遷移
詳細步驟:https://jingyan.baidu.com/article/63f236287e91c40208ab3d11.html
-
注意:設置用戶認證后需要:先連接進入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 /
排坑
-
在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