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

一篇帶給你 MongoDB 密碼設(shè)置

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

給 MongoDB 設(shè)置密碼有兩種情況:

  • 給新創(chuàng)建的 MongDB 容器添加密碼。
  • 給現(xiàn)有的無密碼的 MongoDB 容器進(jìn)行密碼設(shè)置。

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

新創(chuàng)建容器設(shè)置密碼

在 CentOS 服務(wù)器中創(chuàng)建目錄 mongodb_pwd ,目錄結(jié)構(gòu)如下:

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

chmod +x mongo-init.js

mongo-init.js 文件內(nèi)容如下:

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 提供的一個方法,它允許你切換到另一個數(shù)據(jù)庫,而不需要重新連接到MongoDB實(shí)例。這個方法返回一個新的 DB 對象,意思是數(shù)據(jù)庫不存在會新創(chuàng)建一個。
  • db.createCollection('oec2003'):在用戶創(chuàng)建完成后,創(chuàng)建了一個名為 oec2003 的 collection ,默認(rèn)創(chuàng)建一個 collection 是為方便測試,因?yàn)闆]有任何內(nèi)容的庫,使用 show dbs 或者客戶端連上是看不見新創(chuàng)建的數(shù)據(jù)庫 oec2003_db 。

docker-compose.yml 文件內(nèi)容如下:

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 環(huán)境變量設(shè)置根賬戶的用戶名和密碼,可以理解為超級管理員賬號。
  • volumes 中映射的 mongo-init.js 文件在 MongoDB 容器第一次運(yùn)行的時候會被執(zhí)行,是否被執(zhí)行可以通過執(zhí)行 docker logs -f mongodb 命令查看日志:

如果沒有出現(xiàn)上圖中的日志,需要檢查下 mongo-init.js 文件是否有執(zhí)行權(quán)限。

進(jìn)入容器,使用 mongo 進(jìn)入 MongoDB 的 shell 模式,會發(fā)現(xiàn)可以正常進(jìn)入,但如果執(zhí)行一些命令會出現(xiàn)沒有權(quán)限的提示:

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

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

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

使用用戶名密碼登錄后,在進(jìn)行用戶的查詢:

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

給現(xiàn)有容器進(jìn)行密碼設(shè)置

原始構(gòu)建容器的腳本可能是這樣的:

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:

網(wǎng)上看到很多設(shè)置密碼的方式,直接進(jìn)入 MongoDB 的 shell 模式,針對數(shù)據(jù)庫進(jìn)行賬號密碼的添加:

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

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

這時,修改 docker-compose.yml 文件 ,添加 auth認(rèn)證:

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:

重新構(gòu)建容器,這時用客戶端訪問數(shù)據(jù)庫,或者 collection 就會出現(xiàn)如下提示:

最后

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

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

按照上面步驟進(jìn)行配置,是可以達(dá)到密碼保護(hù)的作用。

責(zé)任編輯:姜華 來源: 不止dotNET
相關(guān)推薦

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2021-06-21 14:36:46

Vite 前端工程化工具

2021-01-28 08:55:48

Elasticsear數(shù)據(jù)庫數(shù)據(jù)存儲

2023-03-29 07:45:58

VS編輯區(qū)編程工具

2021-04-14 14:16:58

HttpHttp協(xié)議網(wǎng)絡(luò)協(xié)議

2021-04-08 11:00:56

CountDownLaJava進(jìn)階開發(fā)

2022-03-22 09:09:17

HookReact前端

2021-04-01 10:51:55

MySQL鎖機(jī)制數(shù)據(jù)庫

2021-03-12 09:21:31

MySQL數(shù)據(jù)庫邏輯架構(gòu)

2022-02-17 08:53:38

ElasticSea集群部署

2022-04-29 14:38:49

class文件結(jié)構(gòu)分析

2021-07-21 09:48:20

etcd-wal模塊解析數(shù)據(jù)庫

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集群搭建數(shù)據(jù)庫

2021-04-14 07:55:45

Swift 協(xié)議Protocol

2022-03-08 08:32:43

Tekton云原生開源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 中文字幕一区二区三区不卡 | 国产精品永久免费视频 | 亚洲成人一区二区三区 | 操操日 | 亚洲情侣视频 | 国产一区二区精品在线观看 | 国产a一区二区 | 欧美亚洲视频在线观看 | 国产激情视频在线观看 | 久久美女网 | 国产一级精品毛片 | 污书屋 | 久久一区精品 | 人人做人人澡人人爽欧美 | 嫩草视频在线看 | 国产视频第一页 | 欧美一级网站 | xxxcom在线观看 | 亚洲欧美日韩久久久 | 欧美日批| 视频一区二区在线 | 男女羞羞免费网站 | 一区二区在线 | 成人在线不卡 | 久久久久久蜜桃一区二区 | 国产男女视频网站 | 亚洲天堂日韩精品 | 青青久久av北条麻妃海外网 | 国产欧美一区二区三区在线看 | 久久88 | 久久国产精品免费一区二区三区 | 色悠悠久 | 欧美精品在线一区二区三区 | 欧美中文字幕一区二区 | 欧美一区二区综合 | 91亚洲国产成人久久精品网站 | 欧美女优在线观看 | 久热精品视频 | 亚洲天堂精品久久 | 搞av.com| 天天操网|