0 拉取镜像
docker pull mongo:5. 0. 9
1 主从服务器创建目录
mkdir - p / mydata/mongo/data
mkdir - p / mydata/mongo/conf
mkdir - p / mydata/mongo/logs
2 随机数发生器
openssl rand - base64 756 > / mydata/mongo/conf/mongo. key
chmod 600 / mydata/mongo/conf/mongo. key
2.1 拷贝到从服务器
scp / mydata/mongo/conf/mongo. key root@xxx. xxx. xxx. xxx:/ mydata/mongo/conf
3 修改配置文件
vim / mydata/mongo/conf/mongo. conf
3.1 配置文件
storage:
dbPath: / data / configdb/db
systemLog:
destination: file
logAppend: true
path: / data / configdb/logs/mongo. log
net:
port: 27017
bindIp: 0. 0. 0. 0
replication:
replSetName: "mongoCluster"
3.2 配置文件
拷贝到从服务器
scp / mydata/mongo/conf/mongo. conf root@xxx. xxx. xxx. xxx:/ mydata/mongo/conf
4 主从服务器启动
docker run -- name mongo - d \
- p 27017:27017 \
-- privileged=true \
- v / mydata/mongo/conf:/ data / configdb/conf \
- v / mydata/mongo/data :/ data / configdb/db \
- v / mydata/mongo/logs:/ data / configdb/logs \
mongo:5. 0. 9 -- config / data / configdb/conf/mongo. conf
5 初始化集群
docker exec - it mongo / bin/bash
mongo
rs. initiate(
{
_id: "mongoCluster" ,
members: [
{ _id : 0, host : "ip:port" } ,
{ _id : 1, host : "ip:port" }
]
}
)
rs. initiate(
{
_id: "mongoCluster" ,
members: [
{ _id : 0, host : "ip:port" } ,
{ _id : 1, host : "ip:port" } ,
{ _id : 2, arbiterOnly : true, host : "ip:port" }
]
}
)
rs. status( )
6 创建用户
use admin;
db. createUser( { user:"admin" , pwd :"123456" , roles:[ { role:'root' , db:'admin' } ] } )
use chat;
db. createUser( { user:"chat" , pwd :"123456" , roles:[ { role:'readWrite' , db:'chat' } ] } )
show users
use admin;
db. grantRolesToUser(
"chat" ,
[ "userAdmin" , "userAdminAnyDatabase" ] ,
"chat"
)
rs. status( )
rs. isMaster( )
rs. secondaryOk( )
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system. profile
userAdmin:允许用户向system. users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
7 如需求开启授权,进行以下配置
vim / mydata/mongo/conf/mongo. conf
security:
authorization: enabled
keyFile: / data / configdb/conf/mongo. key
docker restart mongo