项目集成mongo,采用docker进行安装,在安装过程中遇到一些问题进行记录,方便日后查询:

一、因公司服务器老旧,cpu为奔腾,不支持AVX指令集,所以执行启动时一直处理restart状态,错误提示为:Restarting (1) 49 seconds ago,日志错误为:MongoDB 5.0+ requires a CPU with AVX support,经查找如下:

如果是英特尔的CPU,只要是二代或以后的i3、i5或者i7这几种,就会支持AVX指令集,奔腾及赛扬暂不支持

于是采用4.4.0版本进行安装,步骤记录如下:

1、docker run命令启动

# 拉取镜像
docker pull mongo:4.4.0

# 创建宿主机挂载目录【具体目录以自己实际情况创建】
mkdir -p /home/docker/mongo/data/db
mkdir -p /home/docker/mongo/data/log

# 创建和启动容器
docker run -d --name mongo --restart=always -e TZ=Asia/Shanghai -v /home/docker/mongo/data/db:/data/db -v /home/docker/mongo/data/log:/var/log/mongodb -p 27017:27017 --privileged=true mongo:4.4.0

# 检查是否正常启动
docker ps -a

# 进入容器
docker exec -it mongo mongo admin

# 创建账号
db.createUser({user:'admin',pwd:'wugz1019',roles:['userAdminAnyDatabase']});

2、docker-compose启动,文件如下:mongo-docker-compose.yml

version: "3"  # 根据自己的docker-compose 版本进行配置
services:
  mongodb:
    image: mongo:4.4.0 #根据需要选择自己的镜像
    restart: always  # 我的是本地虚拟机,测试环境,不需要每次自动重启
    container_name: mongo
    ports:
      - 27017:27017 #对外暴露停供服务的端口,正式生产的时候理论不用暴露。
    volumes:
      - /home/docker/mongo/data/db:/data/db # 前面是外面映射的,后面是容器内的挂载数据目录
      - /home/docker/mongo/data/log:/var/log/mongodb  # 挂载日志目录`

##### 启动命令如下:

```bash
docker-compose -f mongo-docker-compose.yml up -d

使用navicate进行连接,默认无密码,创建用户与删除用户命令记录:

# 创建管理用户
use admin;
# 展示所有用户
show users;
# 为用户创建密码与角色
db.createUser({user:'admin',pwd:'wugz1019',roles:['userAdminAnyDatabase']});
# 删除某个用户
db.dropUser('root') ;

# 切换至自己的业务库,将XXX替换成自己的库名
use XXX;
# 创建用户
db.createUser({user:'XXX',pwd:'XXX',
roles:[
	{
		"role" : "clusterAdmin",
		"db" : "admin"
	},
	{
		"role" : "readAnyDatabase",
		"db" : "admin"
	},
	{
		"role" : "readWrite",
		"db" : "XXX"
	}
]});