MongoDB的常规安装方式:https://docs.mongodb.com/manual/installation/
这边记录通过Docker运行mongo容器。
mongo image,在Docker Hub上能找到mongodb的镜像,https://hub.docker.com/_/mongo
- pull image
docker pull mongo
//docker pull mongo:4.0

- 运行容器
docker run -p 27017:27017 --name test-mongo -d mongo:4.0
//test-mongo:container的名称

这样,就完成了容器化mongodb。
-
连接到momgodb
MongDB的GUI管理工具是 Studio 3T
image.png
连接成功后,可以看到默认的几个库:
image.png
4.添加用户认证
Docker Hub 的mongo 镜像文档中可以找到开启身份认证的说明,就是启动容器的时候加上-auth启动参数。
//先删除前面运行的test-mongo的容器
docker stop test-mongo
docker rm test-mongo
//运行容器
docker run -p 27017:27017 --name test-mongo -d mongo:4.0 --auth
//进入容器
docker exec -it test-mongo mongo admin //test-mongo是容器名称
db.createUser({user:"root",pwd:"root",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
# roles
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

连接到mongodb:


5.创建数据库,指定用户
使用前面创建的管理员账户授权
db.auth("root","root") //成功会打印1
use book //创建名叫book的数据库 ,成功会打印 switched to db book
//添加用户
db.createUser({ user: "test", pwd: "123456", roles: [{ role: "readWrite", db: "book" }] })

测试连接:

这个指定用户只能看到指定的数据库。
6.挂载数据卷,指定配置文件和数据存储位置
docker run -p 27018:27017 --name test-mongo2 -v 本机目录:/etc/mongo -v 本机目录:/data/db -d mongo:4.0 --config /etc/mongo/mongo1.conf
网友评论