Docker安裝MongoDB的過程(mongo.latest)
一、MongoDB介紹
MongoDB是一種基于分布式文件存儲的數(shù)據(jù)庫,使用C++語言開發(fā),旨在為Web應用提供可擴展且高性能的數(shù)據(jù)存儲解決方案。作為一種介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的技術(shù),MongoDB具有強大的功能和高效的性能,特別適用于處理海量的非結(jié)構(gòu)化數(shù)據(jù)。
MongoDB的核心概念與特性:
- 數(shù)據(jù)模型:MongoDB采用文檔數(shù)據(jù)模型,數(shù)據(jù)以類似JSON的BSON格式存儲,支持復雜的數(shù)據(jù)結(jié)構(gòu),如內(nèi)嵌文檔和數(shù)組,具有高度的靈活性。
- 查詢語言:MongoDB提供類似面向?qū)ο蟮牟樵冋Z言,支持動態(tài)查詢,能夠?qū)崿F(xiàn)大多數(shù)關(guān)系型數(shù)據(jù)庫的單表查詢功能,同時支持數(shù)據(jù)索引以提高查詢性能。
- 分布式存儲:MongoDB支持水平擴展,可將數(shù)據(jù)分布到多個服務器上,保證高可用性和出色的性能。
- 高可用性與容災:MongoDB通過復制集和分片機制,確保系統(tǒng)具備高可用性和容災能力,從而提升了系統(tǒng)的可擴展性。
MongoDB的發(fā)展歷程與最新進展:
MongoDB由10gen(現(xiàn)為MongoDB Inc.)于2007年開始開發(fā),最初目標是構(gòu)建一個云平臺即服務(PaaS)。2009年,MongoDB作為開源項目正式發(fā)布。自那時以來,MongoDB經(jīng)歷了快速發(fā)展,新增了如復制集、分片等關(guān)鍵特性,顯著提升了可擴展性和高可用性。最近的技術(shù)創(chuàng)新包括優(yōu)化有線協(xié)議和引入新的存儲引擎,進一步增強了事務支持功能。
MongoDB的應用場景與行業(yè)應用:
MongoDB非常適合需要快速迭代和支持多樣化數(shù)據(jù)格式的應用場景。憑借其靈活的數(shù)據(jù)庫模型和出色的性能,MongoDB已被廣泛應用于各類企業(yè),滿足從初創(chuàng)公司到大型企業(yè)的不同數(shù)據(jù)管理需求。尤其在處理海量非結(jié)構(gòu)化數(shù)據(jù)的場景中,MongoDB表現(xiàn)出色,成為許多行業(yè)的首選數(shù)據(jù)庫解決方案。
二、安裝MongoDB
1.拉取MongoDB鏡像
docker pull mongo:latest
2.創(chuàng)建掛載目錄
(1)進入文件夾
cd /usr/local/docker
注:不必非得是/usr/local/docker這個目錄,根據(jù)自己的需求和喜好來就行,可自由選擇
(2)創(chuàng)建文件和賦權(quán)
# 創(chuàng)建一個名為 mongodb 的主目錄 mkdir mongodb # 進入 mongodb 目錄,以便后續(xù)操作 cd mongodb # 創(chuàng)建一個名為 config 的子目錄,用于存放 MongoDB 配置文件 mkdir config # 創(chuàng)建一個名為 data 的子目錄,用于存放 MongoDB 數(shù)據(jù)文件 mkdir data # 創(chuàng)建一個名為 logs 的子目錄,用于存放 MongoDB 的日志文件 mkdir logs # 在 config 目錄下創(chuàng)建一個名為 mongod.conf 的空文件,這是 MongoDB 的配置文件 touch config/mongod.conf # 將 /usr/local/docker/mongodb 目錄的權(quán)限設置為 777,允許任何用戶對該目錄進行讀、寫和執(zhí)行操作 chmod 777 /usr/local/docker/mongodb
(3)編寫配置文件
使用 vi 或 vim 編輯器打開mongod.conf文件
vim mongod.conf
如果使用FinalShell工具,可以直接雙擊文件打開
添加內(nèi)容
# 數(shù)據(jù)庫存儲路徑
dbpath=/usr/local/docker/mongodb/data
# 日志文件路徑
logpath=/usr/local/docker/mongodb/logs/mongod.log
# 監(jiān)聽的端口
port=27017
# 允許所有的 IP 地址連接
bind_ip=0.0.0.0
# 啟用日志記錄
journal=true
# 是否后臺運行
fork=true
# 啟用身份驗證
#auth=true
3.啟動MongoDB容器
docker run -dit --name mongo \ -p 17017:27017 \ -v /usr/local/docker/mongodb/config/mongod.conf:/etc/mongod.conf \ -v /usr/local/docker/mongodb/data:/data/db \ -v /usr/local/docker/mongodb/logs:/var/log/mongodb \ -e MONGO_INITDB_ROOT_USERNAME=admin \ -e MONGO_INITDB_ROOT_PASSWORD=123456 \ --restart=always \ mongo
解釋:
docker run:
用于創(chuàng)建并啟動一個新的 Docker 容器。
-dit:
-d:讓容器在后臺運行(detached mode),即以守護進程方式運行容器。
-i:保持標準輸入流打開,通常與 -t 一起使用。
-t:為容器分配一個偽終端,便于交互。
--name mongo:
為啟動的容器指定一個名稱,這里容器名為 mongo。
-p 17017:27017:
將主機的 17017 端口映射到容器的 27017 端口,這樣主機通過 17017 端口可以訪問到容器內(nèi) MongoDB 服務的 27017 端口。MongoDB 默認的端口是 27017。
-v /usr/local/docker/mongodb/config/mongod.conf:/etc/mongod.conf:
將主機的配置文件 /usr/local/docker/mongodb/config/mongod.conf 掛載到容器的 /etc/mongod.conf 位置,使容器使用主機上的配置文件來啟動 MongoDB 服務。
-v /usr/local/docker/mongodb/data:/data/db:
將主機的 /usr/local/docker/mongodb/data 目錄掛載到容器的 /data/db,用作 MongoDB 的數(shù)據(jù)存儲位置。這樣可以確保數(shù)據(jù)在容器重啟時持久化。
-v /usr/local/docker/mongodb/logs:/var/log/mongodb:
將主機的 /usr/local/docker/mongodb/logs 目錄掛載到容器的 /var/log/mongodb 位置,用于保存 MongoDB 的日志文件。這樣日志數(shù)據(jù)不會隨著容器銷毀而丟失。
-e MONGO_INITDB_ROOT_USERNAME=admin:
設置 MongoDB 初始化時的 root 用戶名為 admin。此用戶名將在數(shù)據(jù)庫首次啟動時用于身份驗證。
-e MONGO_INITDB_ROOT_PASSWORD=123456:
設置 MongoDB 初始化時的 root 用戶密碼為 123456。用于數(shù)據(jù)庫身份驗證。
--restart=always:
確保容器在停止或崩潰后總是自動重啟。如果 Docker 服務重啟或容器出現(xiàn)故障,容器將會自動重新啟動。
mongo:
指定使用 mongo 官方鏡像來啟動容器。該鏡像包含了最新的 MongoDB 服務。
總結(jié):
此命令啟動了一個 MongoDB 容器,并通過設置配置文件、數(shù)據(jù)目錄、日志目錄和初始化的用戶名及密碼,確保 MongoDB 在啟動時以指定配置運行,同時數(shù)據(jù)和日志會持久化在主機的指定目錄中。通過端口映射,MongoDB 服務可以通過主機的端口訪問,容器的重啟策略則確保了服務的高可用性。
4.查看是否啟動
三、創(chuàng)建用戶數(shù)據(jù)
1.進入MongoDB容器
docker exec -it mongo /usr/bin/mongosh
2.切換到 admin 庫
use admin
3.執(zhí)行數(shù)據(jù)庫登錄操作,否則后面執(zhí)行命令會提示
MongoServerError[Unauthorized]: Command createUser requires authentication
# 使用創(chuàng)建容器時的用戶名和密碼 db.auth("admin","123456")
4.登錄成功后,創(chuàng)建新用戶(用戶名和密碼可以自定義)
db.createUser( { user: "用戶名稱", // 新用戶的用戶名 pwd: "密碼", // 新用戶的密碼 roles: [ // 為該用戶分配的角色權(quán)限 { role: "root", // 角色是 "root",這是 MongoDB 中的一個內(nèi)置角色,擁有數(shù)據(jù)庫的完全管理權(quán)限 db: "admin" // 該角色是在 "admin" 數(shù)據(jù)庫上授予的,這意味著該用戶具有對整個 MongoDB 實例的管理權(quán)限 } ] } );
示例
db.createUser( { user:"testuser", pwd:"123456", roles:[{role:"root",db:"admin"}] } );
5.創(chuàng)建完成后,嘗試使用上面創(chuàng)建的新用戶信息進行連接
db.auth('testuser','123456')
登錄成功也是顯示如下
四、關(guān)于用戶的常用命令
1.更新用戶角色,修改用戶權(quán)限,不會覆蓋原權(quán)限信息,只新增權(quán)限
db.updateUser("admin",{roles:[{role:"readWrite",db:"admin"}]})
2.更新用戶密碼
db.changeUserPassword("admin","123456")
3.刪除用戶
db.dropUser({'admin'})
4.查看所有用戶
show users
五、使用Navicat連接MongoDB
1.打開 Navicat 新建數(shù)據(jù)庫連接,選擇MongoDB
2.填寫配置信息
3.填寫完成配置信息后,點擊左下角“測試連接”按鈕
提示連接成功,此時,在點擊右下角“保存”按鈕,即可保存連接配置,這樣就可以通過Navicat去訪問MongoDB數(shù)據(jù)庫了。
到此這篇關(guān)于Docker安裝MongoDB詳解(mongo.latest)的文章就介紹到這了,更多相關(guān)Docker安裝MongoDB內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!