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"})