我們將介紹如何下載安裝MongoDB數據庫以及如何在Windows上對該數據庫進行訪問。
請訪問MongoDB官網查找并下載適用于你的操作系統的MongoDB數據庫。例如,如果你使用Windows,請下載用于安裝MongoDB的msi文件。若要在Windows上安裝MongoDB,只需雙擊下載的msi文件,然后按照安裝向導操作。
在Windows上,MongoDB安裝目錄包含一個包含可執行文件的bin文件夾。轉到bin文件夾并執行mongod命令,如下所示:
C:\>cd C:\Program Files\MongoDB\Server\3.4\bin
C:\Program Files\MongoDB\Server\3.4\bin>mongod --dbpath C:\data
mongodb命令啟動服務器,--dbpath參數指定存儲MongoDB數據的文件夾。如果MongoDB成功啟動,你將在控制臺上看到以下消息:
waiting for connections on port 27017
在本節中,我們將介紹訪問MongoDB數據庫的工具Nosqlclient。你可以從GitHub官網查找并下載Windows的Nosqlclient ZIP文件。
解壓縮下載的Nosqlclient ZIP文件,然后單擊Nosqlclient.exe文件啟動Nosqlclient。當用戶界面啟動以后,選擇Connect選項以打開MongoDB連接列表。由于我們還沒有配置任何連接,因此列表中不顯示任何連接,如圖A-1所示。
圖A-1 選擇Create New選項以配置新的MongoDB連接
選擇Create New選項將打開用于配置新的MongoDB連接的Add Connection對話框。參照圖A-2輸入連接詳細信息,然后單擊Save changes按鈕。
圖A-2 輸入連接詳細信息,然后單擊Save changes按鈕
如圖A-3所示,輸入的連接名稱為mylocalmongo,Hostname為127.0.0.1(也就是本地主機),27017作為運行MongoDB實例的端口號,DB名稱為test。默認情況下,在安裝MongoDB時會創建test數據庫。單擊Save changes按鈕后,連接詳細信息將保存并顯示在已配置的MongoDB連接列表中。
圖A-3 新配置的連接顯示在連接列表中
現在,要連接到MongoDB實例,請從連接列表中選擇mylocalmongo連接,然后單擊Connect Now按鈕。
關注微信號:異步圖書,回復VIP免費獲取,電子書、專欄、視頻課免費學,限2月20日前。
關注點贊收藏轉發私信獲取筆記文件
MongoDB基本安裝配置及訪問
1. 安裝
1.1 下載
1.2 版本控制
1.3 先決條件ulimit
1.3 在線安裝
1.3.1 配置包管理器
1.3.2 安裝MongoDB包
1.3.3 驗證安裝
1.3.4 默認目錄
1.3.6 卸載
1.4 離線安裝
1.4.1 下載上傳文件
1.4.2 安裝
1.4.3 環境變量
1.4.4 目錄結構
1.4.5 創建目錄
1.4.6 配置文件
1.4.7 配置文件yml
1.4.8 啟動
1.4.9 設置開機啟動
2. 訪問配置
2.1 開啟端口或關閉防火墻
2.2 IP綁定
2.3 訪問
2.4 基本命令
2.5 權限說明
2.6 創建管理用戶
2.7 創建普通用戶
2.8 更新用戶
2.8.1 更新角色
2.8.1 更新密碼
2.9 刪除用戶
3. GUI
3.1 Studio 3T(官方推薦,但收費)
3.2 Robo 3T(推薦)
3.3 Navicat for mongoDB
3.6 MongoDB Compass(官方)
1. 安裝
操作系統:CentOS 7.9
MongoDB:4.4.10
1.1 下載
MongoDB分為企業版(enterprise version)和社區版(community version),企業版可以提供很多增值功能,應該是需要購買服務;
因此這里選擇社區版就可以了;
下載地址:https://www.mongodb.com/try/download/enterprise
注意下載的地方package有:
mongodb組件的下載:
目前了解到:離線安裝直接使用.tgz即可; 在線安裝時需要下載mongodb-org相關組件;
1.2 版本控制
MongoDB 版本形式為X.Y.Z,其中X.Y 指的是發布系列或開發系列,并Z 指的是修訂版/補丁號;
如果Y是偶數,則指一個發行版本;穩定,適合生產;
如果Y是奇數,則指一個開發版本;僅用于測試,不用于生產;
這里選擇的mongoDB 4.4版本;
1.3 先決條件ulimit
大多數Unix系統會限制進程使用的系統資源,這些限制會對MongoDB產生影響;
從MongoDB 4.4開始,如果ulimit number of open files低于64000,啟動時就會出錯;
各系統的ulimit配置文件如下:
CentOS 7 /etc/security/limits.d/20-nproc.conf
CentOS 6 /etc/security/limits.d/90-nproc.conf
CentOS 8 不需要設置
針對MongoDB,新建一個配置,/etc/security/limits.d/99-mongodb-nproc.conf
# cd /etc/security/limits.d
# vim 99-mongodb-nproc.conf
增加下述配置:
mongod soft fsize unlimited
mongod hard fsize unlimited
mongod soft cpu unlimited
mongod hard cpu unlimited
mongod soft as unlimited
mongod hard as unlimited
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 64000
mongod hard nproc 64000
!wq保存后,重啟電腦使其生效;
1.3 在線安裝
https://docs.mongodb.com/v4.4/tutorial/install-mongodb-on-red-hat/
1.3.1 配置包管理器
創建一個/etc/yum.repos.d/mongodb-org-4.4.repo文件,以便您可以使用yum以下命令直接安裝 MongoDB :
# vim /etc/yum.repos.d/mongodb-org-4.4.repo
添加以下配置信息:
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
您還可以直接從MongoDB 存儲庫下載rpm文件(先選擇 Red Hat / CentOS 版本(例如7),然后選擇MongoDB 發行版本 (例如4.4),然后選擇體系結構(例如x86_64);偶數版本如4.4是發行版本,單數版本如4.3是開發版本,開發版本不適合生產部署;);下載mongodb-org-server、mongodb-org-shell、mongodb-org-mongos、mongodb-org-tools;
1.3.2 安裝MongoDB包
# sudo yum install -y mongodb-org
或者要安裝特定版本的 MongoDB,請單獨指定每個組件包并將版本號附加到包名稱,如下例所示:
# sudo yum install -y mongodb-org-4.4.8 mongodb-org-server-4.4.8 mongodb-org-shell-4.4.8 mongodb-org-mongos-4.4.8 mongodb-org-tools-4.4.8
使用包管理器會自動安裝所有需要的依賴;
1.3.3 驗證安裝
# rpm -qa | grep mongodb
# rpm -ql mongodb-org-server
1.3.4 默認目錄
通過包管理器安裝的,會自動創建目錄,并將這些目錄的所有者和組設置為mongod;MongoDB使用mongod用戶運行;
數據目錄:/var/lib/mongo
日志目錄:/var/log/mongodb
離線手動安裝,可以自行創建非默認目錄,并將所有者和組設置為mongod,并修改配置文件/etc/mongod.conf,詳見離線安裝部分;
1.3.5 默認端口
MongoDB的默認端口是27017,通過下述命令查看是否開啟:
# netstat -natp | grep 27017
1.3.5 運行
新版本linux使用systemctl;舊版本linux使用service; 可運行命令ps --no-headers -o comm 1判斷使用哪個運行;
# systemctl start mongod
如果在運行時出現類似于下述內容的錯誤
Failed to start mongod.service: Unit mongod.service not found.
首先運行一下命令:
> systemctl daemon-reload
然后在運行啟動命令
# systemctl status mongod
# systemctl stop mongod
# systemctl restart mongod
//查看日志
# vi /var/log/mongodb/mongod.log
//設置開機啟動
# chkconfig mongod on
舊版本linux使用service:
# service mongod start
# service mongod stop
# service mongod restart
//查看日志
# vi /var/log/mongodb/mongod.log
1.3.6 卸載
1. 停止MongoDB
# systemctl stop mongod 或者 service mongod stop
2. 刪除安裝的包
# yum erase $(rpm -qa | grep mongodb-org)
3.刪除目錄
# rm -rf /var/log/mongodb
# rm -rf /var/lib/mongo
1.4 離線安裝
https://docs.mongodb.com/v4.4/tutorial/install-mongodb-on-red-hat-tarball/
1.4.1 下載上傳文件
按照下載說明,下載tgz包,mongodb-linux-x86_64-rhel70-4.4.10.tgz,并上傳至服務器/home/目錄;
將文件轉移到/usr/local/mongodb下;
# mkdir /usr/local/mongodb
# cp /home/mongodb-linux-x86_64-rhel70-4.4.10.tgz /usr/local/mongodb
1.4.2 安裝
# cd /usr/local/mongodb
# tar -zxvf mongodb-linux-x86_64-rhel70-4.4.10.tgz
//加壓后目錄太長,修改下
# mv mongodb-linux-x86_64-rhel70-4.4.10 mongodb-4.4.10
1.4.3 環境變量
方式1:配置環境變量
# vim /etc/profile
//添加內容:
export MONGODB_HOME=/usr/local/mongodb/mongodb-4.4.10
export PATH=$MONGODB_HOME/bin:$PATH
//生效環境變量
# source /etc/profile
方式2:復制bin目錄到/usr/local/bin
# cp /usr/local/mongodb/mongodb-4.4.10/bin/* /usr/local/bin/
方式3:bin目錄創建軟連接
# ln -s /usr/local/mongodb/mongodb-4.4.10/bin/* /usr/local/bin/
1.4.4 目錄結構
mongodb比較嚴謹比較規范的目錄結構:
mongodb
├── mongodb-x.x.xx
├── data/
├── etc/
│ ├── cluster.conf
│ ├── keyfile
│ └── mongodb.conf
├── logs/
│ └── mongodb.log
└── tmp/
└── mongo_端口.pid
1.4.5 創建目錄
創建數據目錄和日志目錄;
一般默認目錄為,但離線安裝可以自定義目錄;
創建目錄:
# mkdir -p /usr/local/mongodb/data
# mkdir -p /usr/local/mongodb/logs
# mkdir -p /usr/local/mongodb/etc
# mkdir -p /usr/local/mongodb/tmp
# chown -R mongod:mongod /usr/local/mongodb/data # root用戶時不執行
# chown -R mongod:mongod /usr/local/mongodb/logs # root用戶時不執行
# chown -R mongod:mongod /usr/local/mongodb/etc # root用戶時不執行
# chown -R mongod:mongod /usr/local/mongodb/tmp # root用戶時不執行
注意:
如果是root用戶,好像不需要變更所有者;
如果是非root用戶,且后續啟動也是非root用戶,需要更改目錄所有者,比如mongod:mongdod用戶及組,提前創建用戶及組;
1.4.6 配置文件
在/usr/local/mongodb/etc/目錄創建配置文件;
其實配置文件不一定放到etc下,在哪個目錄無所謂,啟動時指定路徑即可;
# cd /usr/local/mongodb/etc/
# vim mongod.conf
dbpath=/usr/local/mongodb/data # 指定數據文件存放目錄
logpath=/usr/local/mongodb/logs/mongodb.log # 指定日志文件,注意指定日志文件不是目錄
logappend=true # 使用追加的方式寫日志,false是重新啟動覆蓋文件
journal=true # 啟用redo日志文件,默認啟用
port=27017 # 端口,默認27017
auth=true # 啟用驗證
fork=true # 以守護程序的方式啟用,即在后臺運行
maxConns=5000 # 設置最大連接數,默認2000
bind_ip=0.0.0.0 # 默認是 127.0.0.1 只限于本機連接;修改為 0.0.0.0,不限連接;特別注意,安全!
profile=1 #設置日志級別#0 - 關閉性能分析,測試環境可以打開,生成環境關閉,對性能有很大影響; #1 - 開啟慢查詢日志,執行時間大于100毫秒的語句; #2 - 開啟所有操作日志
1.4.7 配置文件yml
mongodb 3.0及以上版本基本都是使用 yaml 語法格式的配置文件,其實1.4.6和1.4.7兩種配置都可;
其實還有很多配置,一般用不到,自行網絡查閱;
一定要注意yml格式規范,空格,不能tab;
# 日志配置
systemLog:
destination: file
path: /usr/local/mongodb/logs/mongodb.log
logAppend: true
# 網絡配置
net:
maxIncomingConnections: 5000
port: 27017
bindIp: 0.0.0.0
serviceExecutor : adaptive
# 存儲配置
storage:
dbPath: /usr/local/mongodb/data
journal:
enabled: true
commitIntervalMs: 100
# 啟動配置
processManagement:
fork: true
pidFilePath: /usr/local/mongodb/tmp/mongo_27017.pid
# 安全配置
security:
authorization: 'enabled' # 啟用驗證
# keyFile: /usr/local/mongodb/etc/replica_set.key # 指定分片或副本集成員之間身份驗證的key文件存儲位置
# clusterAuthMode: "keyFile" # 指定分片或副本集成員之間身份驗證模式
# 副本集集群配置
#replication:
# oplogSizeMB: 65536 #64GB # 默認硬盤的5%,指定oplog的最大尺寸
# replSetName: rs1 # 指定副本集的名稱
# secondaryIndexPrefetch: 'all' # 指定副本集成員在接收oplog之前是否加載索引到內存,all加載所有(默認),none不加載,_id_only僅加載_id
# 分片集群配置
#sharding
# clusterRole: shardsvr # 指定當前分片在集群中的角色,shardsvr是shard節點,configsvr是config server節點
# archiveMovedChunks: false
# configDB: configReplSet/ip:port,ip:port,ip:port # 告訴mongos節點config server的地址信息
1.4.8 啟動
指定參數啟動:
//指定dppath、logpath等配置啟動,因為我們已經配置了配置文件,所以不用這種啟動
# mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/logs/mongodb.log --port 27017 --logappend --bind_ip 0.0.0.0 --fork
既然有配置文件,就指定配置文件啟動:
# cd /usr/local/mongodb/mongodb-4.4.10/bin
//啟動
# mongod -f /usr/local/mongodb/etc/mongod.conf
//關閉
# mongod -f /usr/local/mongodb/etc/mongod.conf --shutdown
1.4.9 設置開機啟動
在CentOS 7下使用systemctl服務管理方式配置MongoDB的啟動,CentOS 7的服務systemctl腳本存放在/usr/lib/systemd/,MongoDB需要開機啟動運行,就要將服務文件放到/usr/lib/systemd/system目錄下;
創建服務文件mongod.service(.service結尾):
# cd /usr/lib/systemd/system
# vim mongod.service
# 內容分為3部分:[Unit]、[Service]和[Install]
[Unit]
Description=MongoDB database server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/mongodb-4.4.10/bin/mongod -f /usr/local/mongodb/etc/mongod.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/mongodb-4.4.10/bin/mongod -f /usr/local/mongodb/etc/mongod.conf --shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target
腳本按照上面編寫完成后,以754的權限保存在/usr/lib/systemd/system目錄下,這時就可以利用systemctl進行配置:
//修改權限
# chmod -R 754 mongod.service
//重新加載配置文件
# systemctl daemon-reload
//啟動測試
# systemctl start mongod
# systemctl status mongod
//加入開機啟動
# systemctl enable mongod
2. 訪問配置
2.1 開啟端口或關閉防火墻
默認端口為27017,需要開啟端口或者關閉防火墻,否則客戶端訪問會超時;
# firewall-cmd --state //查看防火墻狀態
# systemctl start firewalld.service //開啟防護墻
# systemctl enable firewalld.service //設置防火墻自動啟動
# systemctl restart firewalld.service //重啟防火墻
# systemctl stop firewalld.service //重啟防火墻
# firewall-cmd --zone=public --add-port=27017/tcp --permanent //開啟27017端口
--zone #作用域
--add-port=80/tcp #添加端口,格式為:端口/通訊協議
--permanent #永久生效,沒有此參數重啟服務器后失效
# systemctl restart firewalld.service
# netstat -ntlp //查看開啟的端口
# firewall-cmd --list-ports //查看開啟的端口
2.2 IP綁定
默認情況下,MongoDB綁定IP是127.0.0.1,這樣只能在本機的客戶端訪問,遠程客戶端無法連接到MongoDB;
因此要修改配置文件中的bind_ip;詳見配置文件;
2.3 訪問
終端內輸入mongo,即可進入mongodb訪問;
# mongo
2.4 基本命令
命令 | 說明 |
db | 查看當前數據庫;默認test; |
show dbs | 查看所有數據庫列表,mongodb有默認數據庫admin、config、local、test;如果數據庫中沒有數據時,不會展現; |
use admin | 使用admin數據庫;如果不存在,則創建; |
help | 幫助 |
db.help() | 內置函數,幫助 |
show users | 查看用戶列表 |
db.auth("用戶名","密碼") | 登陸 |
2.5 權限說明
權限 | 說明 |
read | 允許用戶讀取指定數據庫; |
readWrite | 允許用戶讀寫指定數據庫; |
userAdmin | 允許用戶向system-users集合寫入,可以在制定數據庫創建、刪除和管理用戶; |
dbAdmin | 允許用戶在指定數據庫中執行管理函數,如索引創建、刪除、查看統計或訪問system.profile; |
clusterAdmin | 必須在admin數據庫中定義,賦予用戶所有分片和復制集相關函數的管理權限; |
readAnyDatabase | 必須在admin數據庫中定義,賦予用戶所有數據庫的讀權限; |
readWriteAnyDatabase | 必須在admin數據庫中定義,賦予用戶所有數據庫的讀寫權限; |
userAdminAnyDatabase | 必須在admin數據庫中定義,賦予用戶所有數據庫的userAdmin權限; |
dbAdminAnyDatabase | 必須在admin數據庫中定義,賦予用戶所有數據庫的dbAdmin權限; |
root | 必須在admin數據庫中定義,超級賬號,超級權限; |
db.updateUser("lizl", {"roles":[
{"role":"userAdmin", db:"admin"},
{"role":"readWrite", db:"admin"}
]})
2.6 創建管理用戶
在mongodb中使用db.createUser(用戶信息)函數創建用戶;注意開啟認證模式auth=true;使用db.auth("<user>","<password>")登陸;
db.createUser({
user:"<name>",
pwd:"<cleartext password>",
customData:{<any information>},
roles:[
{role:"<role>",db:"<database>"},
...
]
});
# mongo
> show users
> use admin
> db.createUser({user:"lizl", pwd:"123456", roles:[{role:"userAdminAnyDatabase", db:"admin"}]});
# mongo
> user admin
> db.auth("lizl","123456")
# 返回0認證失敗,返回1表示成功;
2.7 創建普通用戶
普通用戶由管理用戶創建,所以要先登陸管理用戶;普通用戶和管理用戶差別就在角色;
# mongo
> db.auth("lizl","123456")
> use test
> db.createUser({user:"test", pwd:"123456", roles:[{role:"readWrite", db:"test"}]});
#退出登陸普通用戶
> use test
> db.auth("test","123456")
> db.user.insert({"name":"zhangsan"}) #user集合中插入一條數據
> db.user.find()
2.8 更新用戶
2.8.1 更新角色
如果對已經存在的用戶的角色進行修改,可以使用db.updateUser()函數更新用戶角色;執行該函數需要當前用戶為管理用戶,即具有userAdmin、userAdminAnyDatabase或root角色的管理用戶;
db.updateUser("用戶名",{"roles":[{"role":"角色名稱", db:"數據庫"}, {"更新項2":"更新內容"}]})
# mongo
> user admin
> db.auth("lizl","123456")
> db.updateUser("lizl", {"roles":[
{"role":"userAdmin", db:"admin"},
{"role":"readWrite", db:"admin"},
{"role":"userAdminAnyDatabase", db:"admin"},
{"role":"readWriteAnyDatabase", db:"admin"},
{"role":"dbAdminAnyDatabase", db:"admin"}
]})
2.8.1 更新密碼
執行更新密碼函數需要當前用戶為管理用戶,即具有userAdmin、userAdminAnyDatabase或root角色的管理用戶;
//方式1:
> db.updateUser("用戶名", {"pwd":"新密碼"})
//方式2:
> db.changeUserPassword("用戶名", "新密碼")
# mongo
> user admin
> db.auth("lizl","123456")
> db.changeUserPassword("test", "new pwd")
2.9 刪除用戶
通過db.dropUser("<用戶名>")函數可以刪除指定用戶,刪除成功后會返回true;刪除用戶時需要切換到該用戶所在的數據庫;具有userAdmin、userAdminAnyDatabase或root角色的管理用戶才可以刪除其他用戶;
db.dropUser("<用戶名>")
# mongo
> user admin # 切換數據庫是為了登陸管理用戶
> db.auth("lizl","123456") # 使用管理用戶
> user test # 進入被刪除用戶所在數據庫
> db.dropUser("test") # 刪除用戶
3. GUI
3.1 Studio 3T(官方推薦,但收費)
Studio 3T屬于收費工具,30 天的免費試用期,Studio 3T 具有更多更強大的功能并提供企業支持服務,支持副本集、獨立主機和分片集群連接,支持導入導出,SQL 查詢,語法填充,支持 MongoDB 4.0+ 等等。適用于 Windows,macOS 和 Linux。
3.2 Robo 3T(推薦)
Robo 3T 前身是 Robomongo,后被 3T 公司收購,是一款免費開源的 GUI 管理工具。支持MongoDB 4.0+,輕量級 GUI,支持語法填充等等。適用于 Windows,macOS 和 Linux 系統。
3.3 Navicat for mongoDB
老牌的數據庫管理工具,支持多種數據庫的集成,已集成 MongoDB 類型,屬于付費型管理工具。好處是用會了一個 DB 版的 Navicat,所有 DB 版都會很順手,維持一套操作習慣,如果再肌肉記憶一些快捷鍵,會更加高效。
3.4 NoSQLBooster for MongoDB
NoSQLBooster for MongoDB(以前叫 MongoBooster)風格有點類似于 EasyUI,支持副本集,獨立主機和分片群集連接,提供了全面的服務器監控工具、fluent 查詢構建器、SQL 查詢、查詢代碼、任務調度、ESNext 支持和真正的智能感知體驗等。提供了付費和免費兩種版本。適用于 Windows,macOS 和 Linux 系統。
3.5 NoSQL Manager for MongoDB Professional
從 2.2 到 4.4 全面支持 MongoDB 和 MongoDB Enterprise 版本。功能齊全的 MongoDB UIShell。具有代碼自動完成功能,語法突出顯示和提示。支持副本集,獨立主機和分片群集連接,導入導出,簡單查看和管理所有 MongoDB 對象:數據庫,集合,視圖,索引,用戶,角色和功能等等。提供了付費和免費兩種版本。
3.6 MongoDB Compass(官方)
MongoDB 親兒子系列,官方自己推出的 GUI 可視化管理工具,功能有限。免費簡潔,不支持 SQL查詢,支持性能監控。適用于 Windows,macOS 和 Linux 系統。