成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇帶給你 MongoDB 密碼設置

數據庫 MongoDB
在設置密碼之前,先說說 MongoDB 的版本,之前一直使用 5.0.2 和 5.0.14 版本比較多,然而這兩個版本都是有安全漏洞的,所以大版本如果選擇 5 ,建議選擇 5.0.24 。

給 MongoDB 設置密碼有兩種情況:

  • 給新創建的 MongDB 容器添加密碼。
  • 給現有的無密碼的 MongoDB 容器進行密碼設置。

在設置密碼之前,先說說 MongoDB 的版本,之前一直使用 5.0.2 和 5.0.14 版本比較多,然而這兩個版本都是有安全漏洞的,所以大版本如果選擇 5 ,建議選擇 5.0.24 。

新創建容器設置密碼

在 CentOS 服務器中創建目錄 mongodb_pwd ,目錄結構如下:

使用下面命令給 mongo-init.js 文件添加執行權限(非常重要):

chmod +x mongo-init.js

mongo-init.js 文件內容如下:

print('create user start #################################################################');

db = db.getSiblingDB("oec2003_db");

db.createUser({
  user: "oec2003",
  pwd: "Aa12345678",
  roles: [
    {
      role: "readWrite",
      db: "oec2003_db"
    }
  ]
});

db.createCollection('oec2003');

print('create user end #################################################################');
  • 加上 print 是為了更好地查看容器日志。
  • getSiblingDB() 是 MongoDB shell 提供的一個方法,它允許你切換到另一個數據庫,而不需要重新連接到MongoDB實例。這個方法返回一個新的 DB 對象,意思是數據庫不存在會新創建一個。
  • db.createCollection('oec2003'):在用戶創建完成后,創建了一個名為 oec2003 的 collection ,默認創建一個 collection 是為方便測試,因為沒有任何內容的庫,使用 show dbs 或者客戶端連上是看不見新創建的數據庫 oec2003_db 。

docker-compose.yml 文件內容如下:

version: '3.8'

services:
  mongodb:
    image: mongo:5.0.24
    container_name: mongodb
    restart: unless-stopped
    ports:
      - "37017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: Aa123456
    volumes:
      - mongo-data:/data/db
      - ./config/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro

volumes:
  mongo-data:
  • environment 環境變量設置根賬戶的用戶名和密碼,可以理解為超級管理員賬號。
  • volumes 中映射的 mongo-init.js 文件在 MongoDB 容器第一次運行的時候會被執行,是否被執行可以通過執行 docker logs -f mongodb 命令查看日志:

如果沒有出現上圖中的日志,需要檢查下 mongo-init.js 文件是否有執行權限。

進入容器,使用 mongo 進入 MongoDB 的 shell 模式,會發現可以正常進入,但如果執行一些命令會出現沒有權限的提示:

docker exec -it mongodb bash
mongo
> use admin
> db.getUsers()

所以,在加了密碼的 MongoDB 中需要使用下面命令進行登錄:

mongo -u root -p Aa123456 --authenticationDatabase "admin"
  • 用戶名和密碼為 docker-compose.yml 文件中 environment 中定義的。

使用用戶名密碼登錄后,在進行用戶的查詢:

docker exec -it mongodb bash
mongo -u root -p Aa123456 --authenticationDatabase "admin"
> use oec2003_db
> db.getUsers()

給現有容器進行密碼設置

原始構建容器的腳本可能是這樣的:

version: '3.8'

services:
  mongodb:
    image: mongo:5.0.24
    container_name: mongodb
    restart: unless-stopped
    ports:
      - "47017:27017"
    volumes:
      - mongo-data:/data/db

volumes:
  mongo-data:

網上看到很多設置密碼的方式,直接進入 MongoDB 的 shell 模式,針對數據庫進行賬號密碼的添加:

use oec2003_db
db.createUser({
  user: "oec2003",
  pwd: "Aa12345678",
  roles: [
    {
      role: "readWrite",
      db: "oec2003_db"
    }
  ]
});

但只是針對庫加了用戶和密碼,會發現,客戶端工具,不使用密碼一樣可以登錄,并且能操作庫里的內容。

這時,修改 docker-compose.yml 文件 ,添加 auth認證:

version: '3.8'

services:
  mongodb:
    image: mongo:5.0.24
    container_name: mongodb
    restart: unless-stopped
    ports:
      - "47017:27017"
    volumes:
      - mongo-data:/data/db
    command: --auth

volumes:
  mongo-data:

重新構建容器,這時用客戶端訪問數據庫,或者 collection 就會出現如下提示:

最后

新創建的時候 yml 文件沒有添加 --auth ,也是需要使用用戶名密碼才能使用,但對現有無密碼容器進行修改,必須添加 --auth ,還不知道原因(可能是我操作問題 。

對現有無密碼容器進行修改時,不管是在 environment 中添加根密碼,還是手動進入 shell 中添加,只要沒有添加 --auth ,一樣可以無密碼登錄。

按照上面步驟進行配置,是可以達到密碼保護的作用。

責任編輯:姜華 來源: 不止dotNET
相關推薦

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2021-06-21 14:36:46

Vite 前端工程化工具

2021-01-28 08:55:48

Elasticsear數據庫數據存儲

2023-03-29 07:45:58

VS編輯區編程工具

2021-04-14 14:16:58

HttpHttp協議網絡協議

2021-04-08 11:00:56

CountDownLaJava進階開發

2022-03-22 09:09:17

HookReact前端

2021-04-01 10:51:55

MySQL鎖機制數據庫

2021-03-12 09:21:31

MySQL數據庫邏輯架構

2022-02-17 08:53:38

ElasticSea集群部署

2022-04-29 14:38:49

class文件結構分析

2021-07-21 09:48:20

etcd-wal模塊解析數據庫

2021-10-28 08:51:53

GPIO軟件框架 Linux

2022-02-25 15:50:05

OpenHarmonToggle組件鴻蒙

2023-03-13 09:31:04

2021-07-08 07:30:13

Webpack 前端Tree shakin

2021-05-08 08:36:40

ObjectString前端

2021-04-23 08:59:35

ClickHouse集群搭建數據庫

2021-04-14 07:55:45

Swift 協議Protocol

2022-03-08 08:32:43

Tekton云原生開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美成人免费电影 | 亚洲成人第一页 | 免费的黄色片子 | 久久精品久久综合 | 国产 日韩 欧美 制服 另类 | 亚洲人成人一区二区在线观看 | 亚洲精品成人av久久 | 国产欧美日韩精品在线观看 | 亚洲人成人一区二区在线观看 | 国产精品久久久久久久免费大片 | 久久国产精品久久久久久久久久 | 中文字幕av亚洲精品一部二部 | 精品久久久久久久 | 一区二区三区四区不卡 | 黑人性hd | 99欧美精品 | 国产一区二区在线视频 | 日韩一区二区三区视频在线播放 | 欧美性受xxxx | 日韩欧美一区二区在线播放 | 4h影视| 国产在线视频一区二区董小宛性色 | 国产精品福利一区二区三区 | 超碰一区二区 | 国产精品一二三区 | 在线看片国产 | 日本免费视频 | 中文字幕综合在线 | 久久一区精品 | 久久日韩精品 | a免费观看 | 九九99九九精彩46 | 91在线视频免费观看 | 日韩精品久久久 | 一区二区三区视频 | 久久久.com | av一级一片 | 国产成人免费 | 午夜精品一区二区三区三上悠亚 | 国产一区亚洲 | 亚洲二区在线 |