docker 安装mongodb(5.0+)
拉取mongodb镜像
shell
docker pull mongo
运行容器
shell
docker run -d --name mongodb -v /mycontainers/mongodb/data:/data/db -p 27017:27017 mongo --auth
^: -d : 指定后台运行
^: --name mongodb :设置容器名
^: -v /mycontainers/mongodb/data:/data/db :挂载目录,前面的是宿主机的目录,后面的是容器中的目录
^: -p 27017:27017 :端口映射,前面的宿主机的端口,后面是容器开启端口
^: --auth : 指定需要用户密码验证
进入mongo容器
shell
docker exec -it mongodb mongosh admin
^: mongosh: MongoDB 5.0 及以上版本使用mongosh进入mongo容器,之前版本使用mongo进入mongo容器
^: admin :数据库,进入时可指定也可不指定,不知道进入容器默认进入test数据库,初次进入新建的mongo容器,需要新进入admin数据库创建管理员账号并登录,之后可以进入自己创建的数据库并登录
创建管理员账号
shell
db.createUser({user:'admin',pwd:'admin.123',roles:[{ role:'userAdminAnyDatabase', db:'admin'},'readWriteAnyDatabase']});
登录管理员账号
shell
db.auth("admin","admin.123");
db.auth("master","master.123");
db.auth("slave","slave.123");
创建并进入新数据库
shell
use station;
use new_master;
use new_slave;
use new_slave_wind;
use new_slave_pv;
创建普通账号
shell
db.createUser({ user:'admin',pwd:'admin.123',roles:[ { role:'readWrite', db: 'station'}]});
db.createUser({user:'master',pwd:'master.123',roles:[ { role:'readWrite', db: 'new_master'}]});
db.createUser({ user:'slave',pwd:'slave.123',roles:[ { role:'readWrite', db: 'new_slave'}]});
db.createUser({ user:'slave',pwd:'slave.123',roles:[ { role:'readWrite', db: 'new_slave_wind'}]});
db.createUser({ user:'slave',pwd:'slave.123',roles:[ { role:'readWrite', db: 'new_slave_pv'}]});
登录普通账号
shell
db.auth("admin","admin.123");
db.auth("master","master.123");
db.auth("slave","slave.123");
创建集合
shell
db.createCollection("tt_message");
db.createCollection("tt_offline");
db.createCollection("tt_not_in_table");
db.createCollection("tt_point_indicator");
查看集合
shell
show collections;
查询文档数量
shell
db.collectionName.count()
db.collectionName..countDocuments()
eg:
db.tt_offline.count()
db.tt_offline.countDocuments()
docker-compose启动容器
docker-compose.yml配置
shell
version: "3.0"
services:
mongodb:
image: mongo:latest
container_name: mongodb
restart: always
ports:
- 27017:27017
volumes:
- /etc/localtime:/etc/localtime:ro
- /data/mycontainers/mongodb/data:/data/db
# - /data/mycontainers/data/configdb/mongod.conf:/etc/mongod.conf
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=root123
- MONGODB_AUTH=yes
network_mode: host
^: - MONGO_INITDB_ROOT_USERNAME=root
^: - MONGO_INITDB_ROOT_PASSWORD=root123 直接设置管理员账号
^: - MONGODB_AUTH=yes 指定需要用户密码验证
进入mongo容器
shell
docker exec -it mongodb mongosh admin
登录管理员账号
db.auth("admin","admin.123");