docker部署MongoDB

1. 拉取MongoDB镜像

 docker pull mongo

2. 创建挂载目录

mkdir -p /mydata/docker/mongodb-1/{conf,data,logs} 

3. 创建配置文件

mongod.conf

vi /mydata/docker/mongodb-1/conf/mongod.conf

配置文件内容:

systemLog:
  # MongoDB发送所有日志输出的目标指定为文件
  destination: file
  # mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
  path: "/mydata/docker/mongodb-1/logs/mongodb.log"
  # 当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
  logAppend: true
storage:
  # mongod实例存储其数据的目录。
  dbPath: "/mydata/docker/mongodb-1/data"
  journal:
    #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
    enabled: true
processManagement:
    #启用在后台运行mongos或mongod进程的守护进程模式。
    fork: true
net:
  # 服务实例绑定的IP,默认是localhost(多个ip用逗号分隔),0.0.0.0: 允许所有的 IP 地址连接
  bindIp: 0.0.0.0
  #绑定的端口,默认是27017
  port: 27017

4. 启动MongoDB容器

docker run \
	-d \
	--name mymongo \
	-p 27017:27017 \
	-v /mydata/docker/mongodb-1/data:/data/db \
	-v /mydata/docker/mongodb-1/logs:/var/log/mongodb \
	-v /mydata/docker/mongodb-1/conf/mongod.conf:/etc/mongod.conf \
	mongo 

5. 配置用户名和密码

  • 进入容器,并配置
docker exec -it mymongo /bin/bash

# 进入MongoDB控制台
mongo admin

# 查看数据库
show dbs

# 使用admin
use admin

# 创建系统超级管理员
db.createUser({user:'root',pwd:'root',roles:["root"]});
或
db.createUser({user:'root',pwd:'root',roles:[{role:"root", db:"admin"},'readWrite']});

# 创建普通管理员权限
db.createUser({user:'user',pwd:'root',roles:[{role:"userAdminAnyDatabase", db:"admin"}]});

# 创建普通用户,只对指定的数据库生效(readwrite:表示可读写)
db.createUser({user:'userdemo',pwd:'userdemo',roles:[{role:"readwrite", db:"对应权限数据库"}]});
如:
db.createUser({user:'userdemo',pwd:'userdemo',roles:[{role:"readwrite", db:"articledb"}]});

# 查看创建的用户
db.system.users.find()

# 删除用户
db.dropUser("root")

# 修改密码
db.changeUserPassword("用户名","密码")
如:
db.changeUserPassword("user","123456")

# 验证用户
db.auth('用户名', '密码')
如:
db.auth('root', 'root')

6. 开启认证

在配置文件中添加配置:mongod.conf

security: 
	# 开启授权认证
	authorization: enabled

注:

  • 开启认证之后,客户端登录就必须要带上 用户名和密码了

7. 重启MongoDB容器

docker restart mymongo

8. 开放防火墙端口

  • 关闭防火墙端口
firewall-cmd --permanent --remove-port=tcp/27017
  • 重启防火墙
firewall-cmd --reload
  • 查询端口是否开放
firewall-cmd --query-port=tcp/27017
  • 也可以查看防火墙中开发的所有端口
firewall-cmd --list-all

相关推荐

  1. 使用docker部署mongodb

    2024-04-29 13:36:01       62 阅读
  2. docker部署MongoDB

    2024-04-29 13:36:01       35 阅读
  3. dockerdocker-compose 部署mongoDB

    2024-04-29 13:36:01       29 阅读
  4. MongoDB Shard 集群 Docker 部署

    2024-04-29 13:36:01       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-29 13:36:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-29 13:36:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-29 13:36:01       82 阅读
  4. Python语言-面向对象

    2024-04-29 13:36:01       91 阅读

热门阅读

  1. 蓝队hvv面经

    2024-04-29 13:36:01       29 阅读
  2. Docker新建应用容器引擎与启动ssh服务

    2024-04-29 13:36:01       27 阅读
  3. Pytorch与深度学习

    2024-04-29 13:36:01       33 阅读
  4. 截取视频第一帧当做封面

    2024-04-29 13:36:01       33 阅读
  5. quick3-hydra

    2024-04-29 13:36:01       32 阅读
  6. 基于springboot新农人交流论坛 - 源码免费

    2024-04-29 13:36:01       30 阅读
  7. 商家认证目表-DDL

    2024-04-29 13:36:01       27 阅读
  8. 如何提高前端开发效率?

    2024-04-29 13:36:01       35 阅读
  9. Nginx两个/多个域名同时使用80端口

    2024-04-29 13:36:01       32 阅读
  10. 【Vue】监听div宽高的变化(动态渲染echarts宽高)

    2024-04-29 13:36:01       37 阅读