docker 创建mongodb 容器 映射本地数据目录和配置文件
mongo 容器内部的三个重要目录
日志目录:/var/log/mongodb/ or /var/log/mongodb/mongod.log 数据库目录:/data/db 数据库配置文件:/data/configdb/mongo.conf or /data/configdb/
准备工作
//在本地创建mogodb目录,并给予权限 sudo chmod 777 mongodb
1、创建容器
docker run --name mongodb -v /root/mongo/db:/data/db -v /root/mongo/configdb/mongo.conf:/data/configdb/mongo.conf -v /root/mongo/log/mongod.log:/var/log/mongodb/mongod.log -p 27037:27037 -d mongo -f /data/configdb/mongo.conf
docker run --name mongodb -p 27037:27037 -d mongo
--name 指定docker实例别名 mongodb -v 指定本机文件映射容器文件 -v /Users/zhangzhi/mongodb:/data/db 宿主机 /Users/zhangzhi/mongodb 数据库目录 映射到容器 /data/db 目录 -v /Users/zhangzhi/docker/mongodb/mongo.conf:/data/configdb/mongo.conf 宿主机mongodb配置文件 /Users/zhangzhi/docker/mongodb/mongo.conf 映射到容器 /data/configdb/mongo.conf -p 27037:27037 指定容器端口 27037 映射到 本机端口 27037 -d 设置容器以守护进程方式运行,返回容器id mongo 启动容器mongo服务 -f 指定配置文件 -f /data/configdb/mongo.conf 容器目录下配置文件路径 --auth 使用账号密码登录
2、创建管理员
以管理员身份进入容器
docker exec -it mongodb mongo --host 127.0.0.1 --port 27037 admin
mongodb 是镜像实例名称 (容器别名)
mongo 是启动mongodb客户端指令
— host 指定主机
–port 指定27037
admin 以admin身份进入数据库客户端
如果你不改变默认 27017端口的话,上面指令可以不使用 –host 和 –port 参数
> use admin switched to db admin > db.createUser({ user: 'admin', pwd: 'admin', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }); Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
插入成功后授权 admin
> db.auth("admin","admin"); 1
创建数据库操作账号
> use admin switched to db admin > db.createUser({ user: "操作账号", pwd: "操作账号密码", roles: [ { role: "readWrite", db: "授权的数据库名" } ] }); Successfully added user: { "user" : "lingpao", "roles" : [ { "role" : "readWrite", "db" : "lingpao" } ] }
进入刚才授权的数据库,给刚才新增的账号授权
> use 授权的数据库名 进入当前数据库后 > db.auth("操作账号","账号密码"); 授权成功
验证新增账号是否有权访问指定数据库
使用新增账号连接对应的数据库没有问题.