MongoDB初試備份及恢復

 

MongoDB做爲文檔數據庫,有html

1.登陸MongoDB官網,地址:https://www.mongodb.com/download-center#community  , 根據本身操做系統下載相應版本並安裝。vue

2.啓動mongodb 服務,進入mongodb的安裝文件目錄內。D:\Program Files\MongoDB\Server\3.4\binweb


啓動服務指令:mongod.exe  -dbpath 「D:\Program Files\MongoDB\data」mongodb

服務啓動以後,最後一行會提示已經佔用 27017端口了,能夠進行簡單的本地鏈接或是遠程鏈接了。數據庫

3.本地鏈接:從新在啓動一個cmd窗口,輸入安裝目錄以後直接輸入mongo(或是mongo.exe)或者輸入安全

4.MongoDB備份就恢復服務器

cmd 進入MongoDB下bin目錄,例如:cd D:\Program Files\MongoDB\Server\3.4\binapp

備份命令:>mongodump -h dbhost -d dbname -o dbdirectorysocket

恢復命令:>mongorestore -h <hostname><:port> -d dbname <path>工具

(備份) 或 mongorestore (還原) -h 127.0.0.1:10001 -d test  --directoryperdb /usr/local/data/lietou/

至此mongodb數據庫已經啓動。後面操做就是使用mongodb命令操做了。

mongodb命令教程地址:http://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

4.遠程鏈接
遠程鏈接:mongo 100.1.6.151:27017(遠程ip地址)



5、 用web 查看:
http://100.1.6.148:27017/
 
查看MongoDb.log日記

 db.adminCommand({getLog: "*" })

 

 配置權限須要用戶名密碼登陸


> use EFamilyDB
switched to db EFamilyDB
> db.createUser({user:"root",pwd:"legensity",roles:["userAdmin"]})
Successfully added user: { "user" : "root", "roles" : [ "userAdmin" ] }

這個例子建立了一個名爲 root 的用戶管理員。建立完了這個用戶以後,咱們應該立刻以該用戶的身份登陸:

> db.auth("root","legensity")

如何建立數據庫用戶


首先保證你已經以用戶管理員的身份登陸 admin 數據庫。而後用 use 命令切換到目標數據庫,一樣用 db.createUser() 命令來建立用戶,其中角色名爲 「readWrite」。

普通的數據庫用戶角色有兩種,read 和 readWrite。顧名思義,前者只能讀取數據不能修改,後者能夠讀取和修改。
下面是一個例子:

> use EFamilyDB
switched to db test
> db.createUser({user:"legensity",pwd:"legensity",roles:["readWrite"]})
Successfully added user: { "user" : "legensity", "roles" : [ "readWrite" ] }
> db.auth("legensity","legensity")
1

重啓MongoDB服務:

以管理員進入cmd界面

cd C:\Program Files\MongoDB\Server\3.4\bin
mongod.exe -dbpath "E:\Database\MongoDB\Data" --auth

//  --auth  記得必定要加上

這樣 MongoDB 的數據安全性就獲得保障了,沒有登陸的客戶端將沒法執行任何命令。

C#鏈接MongoDB數據庫鏈接字符串

MongoDB 標準鏈接字符串
mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]


 mongodb:// 是鏈接字串必須的前綴字串
 username:password@ 可選項,鏈接到數據庫後會嘗試驗證登錄
 host1 必須的指定至少一個host
 :portX 可選項,默認鏈接到27017
 /database 若是指定username:password@,鏈接並驗證登錄指定數據庫。若不指定,默認打開admin數據庫。
 ?options 是鏈接選項。若是不使用/database,則前面須要加上/。全部鏈接選項都是鍵值對name=value,鍵值對之間經過&或;(分號)隔開

鏈接選項包括:
Replica set:
replicaSet=name
驅動會校驗replica set的名字。意味着給定的hosts是主庫(seed list),驅動將試圖找到replica set中的全部成員。(•The driver verifies that the name of the replica set it connects to matches this name. Implies that the hosts given are a seed list, and the driver will attempt to find all members of the set.)

Single server:
slaveOk=true|false

自由選項:
safe=true|false
 true: 驅動程序會在提交每次更新操做後執行getLastError命令以確認更新是有效的(參見w和wtimeoutMS)
 false:驅動程序在每次更新操做後不會執行getLastError
w=n
 驅動在getLastError命令加上{ w : n } 參數。意味着safe=true
wtimeoutMS=ms
 驅動在getLastError命令加上{ wtimeout : ms }參數。意味着safe=true.
fsync=true|false
 true: 驅動在getLastError命令加上{ fsync : true } 參數。意味着safe=true.
 false: 驅動不在getlasterror 命令加fsync參數。
journal=true|false
 true: 同步到 journal. 意味着safe=true.
connectTimeoutMS=ms
 設置創建鏈接超時,單位ms
socketTimeoutMS=ms
 設置socket發送或接受超時時間,單位ms

這些選項都是大小寫不敏感的。

鏈接MongoDB(默認鏈接到localhost:27017)

mongodb://localhost

使用用戶fred和密碼foobar鏈接

使用用戶fred和密碼foobar鏈接,指定數據庫baz

鏈接到兩臺服務器組成的Replica Sets

mongodb://example.com:27017,example2.com:27017

鏈接到三臺本地服務器組成的Replica Sets(分別使用2701七、27018和27019端口)

mongodb://localhost,localhost:27018,localhost:27019

鏈接到三臺服務器組成的Replica Sets,把全部寫操做集中在主庫,讀操做分佈在各叢庫

mongodb://host1,host2,host3/?slaveOk=true

使用安全模式鏈接

安全模式下鏈接到一組Replica Sets,等待至少兩臺機器同步成功,並設置兩秒的超時時間


mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000
 
配置爲遠程MongoDB-CR方式連接

 下載了最新mongodb3.03版本,當使用--auth 參數命令行開啓mongodb用戶認證時遇到不少問題,現總結以下: (百度上搜到的基本都是老版本的,看到db.addUser的就是,請忽略) Windows下我作了一個bat文件,用來啓動mongodb,命令行以下: mongod --dbpath db\data --port 27017 --directoryperdb --logpath db\logs\mongodb.log --logappend --auth 最後的參數就是開啓和關閉認證,若是是conf配置文件,應該是auth=true或false 1,首先關閉認證,也就是不帶--auth參數,啓動mongodb 2,使用命令行進入mongodb目錄,輸入mongo命令,默認進入test數據庫 3,use userdb  切換到本身的數據庫,輸入db,顯示userdb 4,建立用戶,角色爲dbOwner,數據庫爲userdb,命令行應該是db.createUser({user:'myuser',pwd:'123456',roles:[{role:'dbOwner',db:'userdb'}]}) 5,切換到admin數據庫,use admin,db ,顯示admin,db.shutdownServer()關閉服務器,填上認證參數,啓動mongodb;之前的版本此時使用mongovue就可使用myuser登陸到userdb數據庫上了,可是3.0.3版本不行,打開mongodb.log文件發現以下錯誤 authenticate db: userdb { authenticate: 1, nonce: "xxx", user: "myuser", key: "xxx" } 2015-06-02T09:57:18.877+0800 I ACCESS   [conn2] Failed to authenticate myuser@userdb with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document 此1-5步驟針對是3.0.3之前版本已經ok,若是是3.0.3,mongodb加入了SCRAM-SHA-1校驗方式,須要第三方工具配合進行驗證,下面給出具體解決辦法: 首先關閉認證,修改system.version文檔裏面的authSchema版本爲3,初始安裝時候應該是5,命令行以下: > use admin switched to db admin >  var schema = db.system.version.findOne({"_id" : "authSchema"}) > schema.currentVersion = 3 3 > db.system.version.save(schema) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 不過若是你如今開啓認證,仍然會提示AuthenticationFailed MONGODB-CR credentials missing in the user document 緣由是原來建立的用戶已經使用了SCRAM-SHA-1認證方式 > use admin switched to db admin > db.system.users.find() [...] { "_id" : "userdb.myuser", "user" : "myuser", "db" : "userdb", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "XXXXXXXXXXXXXXXXXXXXXXXX", "storedKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX", "serverKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX" } }, "roles" : [ { "role" : "dbOwner", "db" : "userdb" } ] } 解決方式就是刪除剛剛建立的用戶,從新重建便可: > use userdb switched to db userdb > db.dropUser("myuser") true >db.createUser({user:'myuser',pwd:'123456',roles:[{role:'dbOwner',db:'userdb'}]}) 而後關閉服務器,開啓認證,重啓服務器,用mongovue鏈接,一切OK 

相關文章
相關標籤/搜索