跳转到主要内容

docker-compose部署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"})