跳转到主要内容

mogodb

docker-copose.yam

version: "3"
services:
  mongodb:
    image: mongo:4.2.8
    container_name: mongo-baise #容器的名字
    restart: always # 自动重启
    privileged: true
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin #初始的用户名
      - MONGO_INITDB_ROOT_PASSWORD=fk12345 #初始用户名的密码
    ports:
      - 27017:27017
    volumes:
      - "./dbs:/data/db"






启动mongodb

docker-compose -f docker-compse.yaml up -d

开启身份认证

# 不启用身份验证,默认为不验证
mongod --noauth
# 启用身份验证
mongod --auth

配置身份认证

# 先以无身份认证启动容器,默认为无身份认证,或者加入启动参数
mongod --noauth

# 进入到容器
docker exec -it <容器ID> /bin/bash

# 连接到mongo数据库
mongo

# 创建管理员用户
use admin
db.createUser({user:"admin",pwd:"123456",roles:[{role:"root","db":"admin"}]});

# 追加权限
db.grantRolesToUser("admin",["dbOwner"])
db.grantRolesToUser("admin",["readWrite"])

# 数据库用户角色:read、readWrite;
# 数据库管理角色:dbAdmin、dbOwner、userAdmin;
# 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
# 备份恢复角色:backup、restore;
# 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、# dbAdminAnyDatabase
# 超级用户角色:root

# 查看系统用户
db.system.users.find()
show users

# 授权,如果提示去权限时可能需要如下操作
db.auth("admin","123456")


# 创建指定库用户,创建之前需要先切换到admin库进行授权,创建指定库用户,需要先切换到这个库下面
use dev_join_logdb
db.createUser({user:"join_admin",pwd:"Vp141421",roles:[{role:"dbOwner","db":"dev_join_logdb"}]});
db.auth("join_admin","Vp141421")

# 追加权限
db.grantRolesToUser("join_admin",["dbOwner"])
db.grantRolesToUser("join_admin",["readWrite"])

# 重启启动容器,并加入启动参数开启mongo的身份验证
mongod --auth

# 重新连接时则需要,附加多个参数进行身份验证
mongo -u admin -p 123456 --authenticationDatabase admin

mongo -u join_admin -p Vp141421 --authenticationDatabase dev_join_logdb


# 删除用户
db.system.users.remove({"_id" : "dev_join_logdb.join_admin"})