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