Docker安裝MongoDB並使用Navicat連線

2022-10-16 21:00:55

MongoDB簡介:

  MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可延伸的高效能資料儲存解決方案。是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。它支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料型別。MongoDB最大的特點是它支援的查詢語言非常強大,其語法有點類似於物件導向的查詢語言,幾乎可以實現類似關聯式資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。

檢視可用的MongoDB版本:

存取DokcerHub中的MongoDB映象庫地址:https://hub.docker.com/_/mongo/tags

可以通過 Sort by 檢視其他版本的MongoDB,檢視最新版本MongoDB映象(mongo:latest):https://hub.docker.com/_/mongo/tags?page=1&name=latest

 

 

 此外,我們還可以用docker search mongo命令來檢視可用版本: 

拉取最新版本的MongoDB映象:

docker pull mongo:latest

注意:tag是可選的,tag表示標籤,多為軟體的版本,預設是latest版本(最新版)

驗證MongoDB映象是否成功拉取到本地:

使用以下命令來檢視MongoDB映象是否成功拉取到本地:

docker images

建立並執行一個MongoDB容器:

docker run -itd --name mongo-test -p 27017:27017 mongo --auth

引數說明:

  • -itd:其中,i是互動式操作,t是一個終端,d指的是在後臺執行。
  • --name mongo-test:容器名稱
  • -p 27017:27017 :對映容器服務的 27017 埠到宿主機的 27017 埠。外部可以直接通過 宿主機 ip:27017 存取到 mongo 的服務。
  • --auth:需要密碼才能存取容器服務。

解決無法正常執行mongo命令問題

進入容器:

docker exec -it  mongo-test mongo

 異常原因:

OCI runtime exec failed: exec failed: unable to start container process: exec: "mongo": executable file not found in $PATH: unknown

官網解決方案:

https://github.com/docker-library/mongo/issues/558

mongo5.0以上的版本使用mongo來執行mongodb命令已經不支援了,你需要改用mongosh來替代mongo!

新增MongoDB連線使用者和密碼:

1、進入建立的MongoDB容器

docker exec -it  mongo-test mongosh

2、建立MongoDB使用者

#進入 admin 的資料庫
use admin

#建立管理員使用者
db.createUser(
   {
     user: "admin",
     pwd: "123456",
     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
   }
 )

 #建立有可讀寫許可權的使用者. 對於一個特定的資料庫, 比如'demo'
 db.createUser({
     user: 'test',
     pwd: '123456',
     roles: [{role: "read", db: "demo"}]
 })

伺服器設定27017的開放埠:

 

Navicat連線mongoDB

1.連線MongoDB點選這個位置

 

2、連線引數介紹:

stand alone:獨立的

shard cluster:分片叢集

replica set:複製集

SRV record:

SRV記錄是DNS伺服器的資料庫中支援的一種資源記錄的型別,它記錄了哪臺計算機提供了哪個服務這麼一個簡單的資訊。

SRV 記錄:一般是為Microsoft的活動目錄設定時的應用。DNS可以獨立於活動目錄,但是活動目錄必須有DNS的幫助才能工作。

為了活動目錄能夠正常的工作,DNS伺服器必須支援服務定位(SRV)資源記錄,資源記錄把服務名字對映為提供服務的伺服器名字。

活動目錄客戶和域控制器使用SRV資源記錄決定域控制器的IP地址。

一般情況下,我們連線只需要連線主庫查資料,所以選擇獨立的這個連線方式就可以,填寫好常規引數可以點選測試連線是否正常,即可連線!