1、Docker安装mongodb
拉取镜像
docker pull mongo
创建Mongo容器
docker run -itd --name mymongo \
-p 27017:27017 \
-e TZ=Asia/Shanghai \
--privileged \
-v /dockerDeploy/mongodb/db/:/data/db \
--restart always \
mongo --auth
docker run -itd --name mongodb --restart=always -p 27017:27017 -v /home/mongo/data:/data/db -v /home/mongo/conf:/data/configdb -v /home/mongo/logs:/data/log/ mongo:4.0.5 -f /data/configdb/mongod.conf --bind_ip_all
# -v 指定配置文件启动
# --bind_ip_all 允许所以IP访问
# ----restart=always Docker服务重启容器也启动
# --privileged 拥有真正的root权限
–auth 带授权验证的容器
–restart unless-stopped 不管状态码为多少 自动重启
–restart always 总是自动重启
-v /etc/localtime:/etc/localtime:ro 时区设置
-e TZ=Asia/Shanghai
开启密码访问验证。
- 直接使用docker命令进入容器
docker exec -it mongodb bash
- 进入后输入mongo命令进入mongo数据库
root@510533585ae0:/# mongo
MongoDB shell version v4.2.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session {
"id" : UUID("68c0fa27-a2e5-4155-9607-1c1b34d0906a") }
MongoDB server version: 4.2.0
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
- 输入命令进入admin数据库
use admin
- 创建一个用户
db.createUser({
user: 'root',
pwd: 'kaide0630',
roles: [ {
role: "root", db: "admin" } ] });
- 校验用户 返回1 正确
db.auth("root","kaide0630")
- 创建索引
# 装mongodb的时候要加索引
db.hisdata.createIndex( {
deviceId: 1,mode:-1,time:1}, {
background: true, sparse: true } )
db.hisdata.createIndex( {
deviceId: 1,time:1}, {
background: true, sparse: true } )
db.hisdata.createIndex( {
time:1}, {
background: true, sparse: true } )
- 修改数据库密码加密方式
use mysql;
alter user 'root’@'%' identified with mysql_native_password by ‘rootpwd123’;
flush privileges;
- 退出
exit
role后面的参数参考,可根据时间情况选择:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
之后可以创建普通用户执行如下三条语句即可:
use test
db.createUser({
user: 'test',
pwd:'test',
roles: [{
role:"readWrite",
db:"testdb"
}]
});
db.auth("test","test")
-
mongodb 导出数据
mongoexport -ufengbo -p qwert12345! -d fbdata3 -c zcdata --type=csv -o /iotdocker/mongoback/zcdata.dat --fields devicedId,time,content
2、Docker-compose部署mongodb分片集群
2.1 配置文件
# docker挂载了配置文件 可不创建vim /etc/mongodb/config.conf
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /data/db
journal:
enabled: true
directoryPerDB: true
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 8
directoryForIndexes: true
# where to write logging data.
systemLog:
destination: file
logAppend: true
path