自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

在設(shè)置密碼之前,先說(shuō)說(shuō) MongoDB 的版本,之前一直使用 5.0.2 和 5.0.14 版本比較多,然而這兩個(gè)版本都是有安全漏洞的,所以大版本如果選擇 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 提供的一個(gè)方法,它允許你切換到另一個(gè)數(shù)據(jù)庫(kù),而不需要重新連接到MongoDB實(shí)例。這個(gè)方法返回一個(gè)新的 DB 對(duì)象,意思是數(shù)據(jù)庫(kù)不存在會(huì)新創(chuàng)建一個(gè)。
  • db.createCollection('oec2003'):在用戶創(chuàng)建完成后,創(chuàng)建了一個(gè)名為 oec2003 的 collection ,默認(rèn)創(chuàng)建一個(gè) collection 是為方便測(cè)試,因?yàn)闆](méi)有任何內(nèi)容的庫(kù),使用 show dbs 或者客戶端連上是看不見(jiàn)新創(chuàng)建的數(shù)據(jù)庫(kù) 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è)置根賬戶的用戶名和密碼,可以理解為超級(jí)管理員賬號(hào)。
  • volumes 中映射的 mongo-init.js 文件在 MongoDB 容器第一次運(yùn)行的時(shí)候會(huì)被執(zhí)行,是否被執(zhí)行可以通過(guò)執(zhí)行 docker logs -f mongodb 命令查看日志:

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

進(jìn)入容器,使用 mongo 進(jìn)入 MongoDB 的 shell 模式,會(huì)發(fā)現(xiàn)可以正常進(jìn)入,但如果執(zhí)行一些命令會(huì)出現(xiàn)沒(méi)有權(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 模式,針對(duì)數(shù)據(jù)庫(kù)進(jìn)行賬號(hào)密碼的添加:

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

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

這時(shí),修改 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í)用客戶端訪問(wèn)數(shù)據(jù)庫(kù),或者 collection 就會(huì)出現(xiàn)如下提示:

最后

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

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

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

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

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2021-10-28 08:51:53

GPIO軟件框架 Linux

2022-02-25 15:50:05

OpenHarmonToggle組件鴻蒙

2021-04-14 07:55:45

Swift 協(xié)議Protocol

2021-07-08 07:30:13

Webpack 前端Tree shakin

2023-03-13 09:31:04

2021-05-08 08:36:40

ObjectString前端

2021-04-23 08:59:35

ClickHouse集群搭建數(shù)據(jù)庫(kù)

2021-07-21 09:48:20

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

2021-04-08 11:00:56

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

2021-06-21 14:36:46

Vite 前端工程化工具

2021-01-28 08:55:48

Elasticsear數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)

2021-04-01 10:51:55

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

2021-04-14 14:16:58

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

2022-03-22 09:09:17

HookReact前端

2022-04-29 14:38:49

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

2023-03-29 07:45:58

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

2021-03-12 09:21:31

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

2022-02-17 08:53:38

ElasticSea集群部署

2022-07-06 07:57:37

Zookeeper分布式服務(wù)框架
點(diǎn)贊
收藏

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