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