摘要:一下安裝數(shù)據(jù)庫(kù)進(jìn)入官網(wǎng),選擇相應(yīng)的版本下載,安裝時(shí)默認(rèn)勾選安裝服務(wù)和修改一些數(shù)據(jù)庫(kù)配置,如已有數(shù)據(jù)庫(kù)連接工具,可取消默認(rèn)勾選的安裝。
一、Win下安裝數(shù)據(jù)庫(kù)
進(jìn)入mongo官網(wǎng),選擇相應(yīng)的msi版本下載,安裝時(shí)默認(rèn)勾選安裝MongoD服務(wù)和修改一些數(shù)據(jù)庫(kù)配置,如已有數(shù)據(jù)庫(kù)連接工具Robo 3T,可取消默認(rèn)勾選的compass安裝。
若啟動(dòng)服務(wù)報(bào)mp錯(cuò)誤,可修改binmongod.cfg,注釋最后一行mp
安裝后如果需要修改配置/服務(wù)或手動(dòng)運(yùn)行,可以參考如下:
可以通過(guò)命令行運(yùn)行,也可以通過(guò)指定配置運(yùn)行,以安裝在D:MongoDB為例
# 單行配置 > D:MongoDBinmongod.exe --dbpath D:MongoDBdata --logappend # 指定配置文件 > D:MongoDBinmongod.exe --config "D:MongoDBinmongod.cfg"
通過(guò)安裝和運(yùn)行服務(wù),可以讓mongoDB以后臺(tái)靜默的方式運(yùn)行。
安裝/移除服務(wù):
# 添加到windows服務(wù) > D:MongoDBinmongod.exe --config "D:MongoDBinmongod.cfg" --install # 移除服務(wù)(以管理員身份運(yùn)行cmd) > D:MongoDBinmongod.exe --remove
啟動(dòng)/關(guān)閉服務(wù):
> net start MongoDB > net stop MongoDB二、Linux安裝數(shù)據(jù)庫(kù)
如果必要可先更新yum包管理,下面以CentOS系統(tǒng)為例:
$ yum -y update
查看當(dāng)前系統(tǒng)版本
$ cat /etc/redhat-release
打開(kāi) https://repo.mongodb.org/yum/... ,選擇適合自己系統(tǒng)的mongo版本,然后編輯Mongodb安裝源,下面以3.6為例:
$ sudo vi /etc/yum.repos.d/mongodb-org-3.6.repo
編輯內(nèi)容(根據(jù)自己的mongo版本替換下面的3.6字樣):
[mongodb-org-3.6] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
安裝:
$ yum install mongodb-org
mongo配置文件路徑:/etc/mongod.conf,但如果用mongod命令直接運(yùn)行(非service運(yùn)行),此時(shí)若不用-f指定配置文件,mongo會(huì)使用內(nèi)在配置,dbpath也默認(rèn)存放在/data/db下
$ vi /etc/mongod.conf #------------------------------------------------------------------------ # 可修改數(shù)據(jù)庫(kù)存放位置 storage: dbPath: /var/lib/mongodb # 若要支持遠(yuǎn)程連接,需將默認(rèn)的127.0.0.1改為: net: bindIp: 0.0.0.0 # 若需數(shù)據(jù)庫(kù)權(quán)限認(rèn)證,開(kāi)啟下面配置: security: authorization: enabled
若遠(yuǎn)程連接工具Robo 3T還是不能連接,需在防火墻增加端口:
$ sudo /sbin/iptables -I INPUT -p tcp --dport 27017 -j ACCEPT三、Linux運(yùn)行數(shù)據(jù)庫(kù)
$ service mongod start # 自動(dòng)使用配置/etc/mongod.conf # 或手動(dòng)指定配置文件啟動(dòng): $ sudo mongod -f /etc/mongod.conf --fork # --fork后臺(tái)運(yùn)行 # 若以權(quán)限認(rèn)證運(yùn)行 $ sudo mongod -f /etc/mongod.conf --auth --fork
若啟動(dòng)出現(xiàn)timeout錯(cuò)誤時(shí),可查看service里的pid與config里的pid是否相同,不一致則修改:
$ sudo vi /usr/lib/systemd/system/mongod.service # 修改pid $ systemctl daemon-reload # 重新加載service服務(wù) $ service mongod start
$ service mongod restart
$ service mongod stop
或手動(dòng)關(guān)閉
$ sudo mongod -f /etc/mongod.conf --shutdown
默認(rèn)安裝后即隨機(jī)啟動(dòng),無(wú)須設(shè)置
$ chkconfig mongod on四、操作數(shù)據(jù)庫(kù)
1.) 數(shù)據(jù)庫(kù)操作
# 進(jìn)入mongo $ mongo # 顯示當(dāng)前數(shù)據(jù)庫(kù),默認(rèn)定位test數(shù)據(jù)庫(kù) > db; # 顯示所有數(shù)據(jù)庫(kù) > show dbs; # 切換/創(chuàng)建數(shù)據(jù)庫(kù) > use xxx; # 刪除數(shù)據(jù)庫(kù) > db.dropDatabase(); # 修復(fù)數(shù)據(jù)庫(kù) > db.repairDatabase(); # 查看當(dāng)前db的鏈接機(jī)器地址 > db.getMongo(); # 退出mongo > exit;
2.) 集合(表)操作
# 顯示所有集合名 > db.getCollectionNames(); # 創(chuàng)建集合 > db.createCollection("users", {size: 1024, max: 1000}); # 最大1M,1000條 # 刪除集合 > db.users.drop();
3.) 文檔(記錄)操作
3.2版本之后,對(duì)CRUD操作分別新增了單條和批量指令
# 查詢記錄 ------------------------------------------------------------- > db.users.findOne(); # 查詢集合里第一條 > db.users.find(); # 查詢集合里全部 # 根據(jù)條件查詢 > db.users.findOne({age: 8}); > db.users.find({age: 8}); # 新增記錄 ------------------------------------------------------------- > db.users.insertOne({name: "wang", age: 8}); # 主鍵已存在會(huì)報(bào)錯(cuò) > db.users.insertMany([{},{}]); # 新增多條 > db.users.save({name: "wang", age: 8}); # 主鍵已存在會(huì)替換 # 修改記錄 ------------------------------------------------------------- > db.users.updateOne({name: "wang"}, {$set: {sex: "male"}}); > db.users.updateMany({name: "wang"}, {$set: {sex: "male"}}); # 通用寫法(后面兩個(gè)參數(shù):第一個(gè)表示找不到則新建一條,第二個(gè)表示更新多條) > db.users.update({name: "wang"}, {$set: {sex: "male"}}, false, true); # 刪除記錄 ------------------------------------------------------------- > db.users.deleteOne({age: 8}); > db.users.deleteMany({age: 8}); # 通用寫法 > db.users.remove({age: 8}); # 默認(rèn)多條 > db.users.remove({age: 8}, true); # 可設(shè)單條
1.) 用戶類型
對(duì)于web應(yīng)用來(lái)說(shuō),最常用的用戶類型有:
用戶類型 | 角色 | 管理用戶 | 讀寫數(shù)據(jù) | 身份授權(quán)庫(kù) |
---|---|---|---|---|
數(shù)據(jù)庫(kù)用戶 | read/readWrite | 無(wú) | 指定庫(kù) | 指定庫(kù)/admin |
所有數(shù)據(jù)庫(kù)讀寫權(quán)限 | readWriteAnyDatabase | 無(wú) | 任意庫(kù) | admin |
用戶管理員 | userAdmin | 指定庫(kù) | 無(wú) | 指定庫(kù)/admin |
所有數(shù)據(jù)庫(kù)管理員 | userAdminAnyDatabase | 任意庫(kù) | 無(wú) | admin |
超級(jí)賬號(hào) | root | 任意庫(kù) | 任意庫(kù) | admin |
2.) 常用用戶指令
# 顯示所有用戶 > show users; # 新建用戶 > db.createUser({user:"用戶名",pwd:"密碼",roles:[{role:"角色",db:"庫(kù)"}]}); # 若當(dāng)前數(shù)據(jù)庫(kù)與目標(biāo)庫(kù)相同,可簡(jiǎn)寫: > db.createUser({user:"用戶名",pwd:"密碼",roles:["角色"]}); # 追加用戶權(quán)限 > db.grantRolesToUser("用戶名",[{role:"角色",db:"庫(kù)"}]); # 修改用戶權(quán)限 > db.updateUser("用戶名",{roles:["角色1","角色2"]}); # 更新密碼 > db.changeUserPassword("用戶名","密碼"); # 或 > db.updateUser("用戶名",{pwd:"密碼"}); # 刪除用戶 > db.dropUser("用戶名");
3.) 管理用戶創(chuàng)建
root、*AnyDatabase角色用戶、cluster集群等用戶只能在admin庫(kù)下創(chuàng)建
> use admin; # 超級(jí)管理員 > db.createUser({user:"root",pwd:"密碼",roles:["root"]}); # user管理員賬號(hào) > db.createUser({user:"用戶名",pwd:"密碼",roles:["userAdminAnyDatabase"]}); # 任意庫(kù)讀寫賬號(hào) > db.createUser({user:"用戶名",pwd:"密碼",roles:["readWriteAnyDatabase"]}; # 普通讀寫用戶(可以在admin庫(kù)下創(chuàng)建,但認(rèn)證時(shí)也需在admin庫(kù)) > db.createUser({user:"用戶名",pwd:"密碼",roles:[{role:"readWrite",db:"業(yè)務(wù)庫(kù)"}]});
4.) 普通用戶創(chuàng)建
mongoDB的權(quán)限是跟隨庫(kù)的,用戶在哪個(gè)庫(kù)下創(chuàng)建的,則需在哪個(gè)庫(kù)進(jìn)行auth認(rèn)證,如果認(rèn)證庫(kù)和讀寫目標(biāo)庫(kù)一致,則連接時(shí)authSource參數(shù)可省略(見(jiàn)第四節(jié):連接數(shù)據(jù)庫(kù))
> use xxx; > db.createUser({user:"用戶名",pwd:"密碼",roles:["readWrite"]);
如果提示SCRAM-SHA-256 requires undigested passwords錯(cuò)誤,需要加mechanisms,如下:
> db.createUser({user:"用戶名",pwd:"密碼",roles:["readWrite"],mechanisms: ["SCRAM-SHA-1"]});五、連接數(shù)據(jù)庫(kù)
1.)普通登錄
如果mongoDB未開(kāi)啟認(rèn)證模式,所有用戶的權(quán)限與root一樣,任意操作。
$ mongo # 自定義host和端口 $ mongo --host 主機(jī) --port 端口
2.)認(rèn)證登錄
mongoDB的權(quán)限是跟隨庫(kù)的,普通用戶在哪個(gè)庫(kù)新建授權(quán),就需要在哪個(gè)庫(kù)進(jìn)行auth驗(yàn)證
$ mongo --host 主機(jī) --port 端口 > use 認(rèn)證數(shù)據(jù)庫(kù); > db.auth("用戶名", "密碼");
也可以登錄時(shí)一并授權(quán)認(rèn)證:
$ mongo --host 主機(jī) --port 端口 -u "用戶名" -p "密碼" --authenticationDatabase "身份認(rèn)證所用庫(kù)"
root和*AnyDatabase角色的權(quán)限只能在admin數(shù)據(jù)庫(kù)里認(rèn)證,如:
$ mongo --host 主機(jī) --port 端口 -u root -p 123456 --authenticationDatabase admin
1.)未認(rèn)證數(shù)據(jù)庫(kù)
mongo://主機(jī):端口/數(shù)據(jù)庫(kù)名
2.)認(rèn)證數(shù)據(jù)庫(kù)
a.)普通數(shù)據(jù)用戶
若當(dāng)前用戶認(rèn)證的數(shù)據(jù)庫(kù)與要操作的數(shù)據(jù)庫(kù)相同,連接方式如下:
mongo://用戶名:密碼@主機(jī):端口/數(shù)據(jù)庫(kù)名
若不同,則需添加authSource,例如:在admin庫(kù)里認(rèn)證了,角色db卻是xxx
mongo://用戶名:密碼@主機(jī):端口/xxx?authSource=admin
b.)root和所有數(shù)據(jù)庫(kù)用戶
若連接用戶是root、*AnyDatabase角色、cluster集群的認(rèn)證庫(kù)都是admin
mongo://用戶名:密碼@主機(jī):端口/數(shù)據(jù)庫(kù)名?authSource=admin
c.)認(rèn)證機(jī)制
mongoDB支持多種認(rèn)證機(jī)制, 常用的有"MONGODB-CR" 和 "SCRAM-SHA-1" 兩種,官方推薦 "SCRAM-SHA-1",此時(shí)不需要帶在URI里,但如果是"MONGODB-CR"類型需加添加在URI上。
mongo://用戶名:密碼@主機(jī):端口/數(shù)據(jù)庫(kù)?authMechanism=認(rèn)證機(jī)制&authSource=身份認(rèn)證所用庫(kù)六、備份/恢復(fù)數(shù)據(jù)庫(kù)
也適用于copy遠(yuǎn)程數(shù)據(jù)庫(kù)到本地
$ mongodump --host 主機(jī) --port 端口 --username 用戶 --password "密碼" --authenticationDatabase "授權(quán)庫(kù)" --db 目標(biāo)數(shù)據(jù)庫(kù) --out 存放目錄
若本地?cái)?shù)據(jù)庫(kù)以非認(rèn)證模式運(yùn)行,恢復(fù)到本地可簡(jiǎn)單的如下:
$ mongorestore 存放目錄
恢復(fù)遠(yuǎn)程認(rèn)證數(shù)據(jù)庫(kù):
$ mongorestore --host 主機(jī) --port 端口 --username 用戶 --password "密碼" --authenticationDatabase "授權(quán)庫(kù)" 存放目錄
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19526.html
摘要:本次講述安裝的當(dāng)然是免費(fèi)的社區(qū)版。兩種安裝方法手動(dòng)安裝,需要下載安裝包解壓編譯比較繁瑣使用系統(tǒng)的安裝,是系統(tǒng)上的包管理工具,類似的。如文章出現(xiàn)有錯(cuò)誤,麻煩指出或有相關(guān)知識(shí)點(diǎn)討論也十分歡迎 Mac上裝MongoDB的官網(wǎng)教程:https://docs.mongodb.com/manu...,英文不錯(cuò)的可以直接看,教程也很清晰。 兩種版本 MongoDB有兩種版本: 1.(Enterpri...
摘要:基本介紹這是一個(gè)基本的環(huán)境搭建不同的操作系統(tǒng)可以選擇不同的安裝方式如果不需要太多的安裝步驟就直接在官網(wǎng)下載最新版安裝包進(jìn)行安裝即可環(huán)境配置必須安裝的軟件更改源與更新系統(tǒng)首先備份下載的源配置文件運(yùn)行生成緩存更新系統(tǒng)安裝使用安裝命 基本介紹 這是一個(gè)基本的Node.js環(huán)境搭建,不同的操作系統(tǒng)可以選擇不同的安裝方式 如果不需要太多的安裝步驟,就直接在Node.js官網(wǎng)下載最新版安裝包進(jìn)行...
摘要:如刪除集合下全部文檔刪除等于搜云庫(kù)的全部文檔搜云庫(kù)關(guān)注公眾號(hào),搜云庫(kù),專注于開(kāi)發(fā)技術(shù)的研究與知識(shí)分享刪除等于的一個(gè)文檔查詢文檔查詢文檔使用方法。 一、什么是MongoDB ? MongoDB 是由C++語(yǔ)言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)。 在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。 MongoDB 旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。 Mo...
閱讀 4627·2021-09-26 09:55
閱讀 1369·2019-12-27 12:16
閱讀 890·2019-08-30 15:56
閱讀 1908·2019-08-30 14:05
閱讀 995·2019-08-30 13:05
閱讀 1271·2019-08-30 10:59
閱讀 1447·2019-08-26 16:19
閱讀 1889·2019-08-26 13:47