Mongodb 透過Docker 部署 並開啟事務功能及如何創建帳號

Mongodb 透過Docker 部署 並開啟事務功能及如何創建帳號

mongodb Version : 4.4.1

# docker-compose  
# 有另外拆分 要記得在當前目錄 創建一個 .env  
 
name: tools 
version: "3.7" 
services: 
  mongodb: 
    image: mongo:4.4.1 
    container_name: mongodb 
    restart: always 
    # volumes:  
      # - ${BACKUP_PATH}/mongodb:/data/db 
    logging: 
      driver: "json-file" 
      options: 
        max-size: "1g"  # 设置最大日志文件大小为1GB 
        max-file: "3"     # 设置最大日志文件数量 
    ports: 
      - 27017:27017 
    command: --replSet rs0 
    environment: 
      - MONGO_INITDB_ROOT_USERNAME=${MONGODB_ROOT_USERNAME} 
      - MONGO_INITDB_ROOT_PASSWORD=${MONGODB_ROOT_PASSWORD}  
      - TZ=${TZ} 
    networks: 
      backendNet: 
 
networks: 
  backendNet:
#.env 
 
#############           MongoDB           ############ 
MONGODB_VERSION=4.4.1 
MONGODB_HOST_PORT=27017 
MONGODB_ROOT_USERNAME=root 
MONGODB_ROOT_PASSWORD=123456

初始化 Mongodb

若以上密碼有更改 請記得也要修改以下的範例

mongo --port 27017 --username root --password 123456 --authenticationDatabase admin 

# 以下步驟在剛創建mongodb時 一次就好
rs.initiate() 
rs.isMaster()
初始化運行完後 會顯示類似的結果

創建mongodb user 及 db

以下命令都需要透過 mongo 內建功能去進行創建,若是使用docker部署的話可以先進入容器內,docker exec -it mongodb bash

Step 1 登入mongo admin

# username 及 password 為創建mongodb時 使用的帳號密碼

mongo --port 27017 --username root --password 123456 --authenticationDatabase admin 
輸入指令後 會彈出類似這樣的響應

Setp 2 創建user 及要使用的db

# 先切換到要使用的db 
use test_db 


# 創建 使用者 以及給予相對應的db權限,以下範例為讀寫權限都有
# user 及 pwd 為 要訪問該db的帳號密碼
db.createUser({ 
  user: "test", 
  pwd: "123456", 
  roles: [ 
    { role: "readWrite", db: "test_db" } 
  ] 
})
創建完成後 會響應類似以上的結果

Setp 3 登入mongodb

若有使用 Navicat 或者 Mongodb 其他gui工具 可以透過以下URI 對mongo進行訪問

mongodb://test:[email protected]:27017/test_db