基于docker的mongo-db开启授权密码访问

Docker版MongoDB的安装 url:https://www.jianshu.com/p/2181b2e27021

Docker Hub上关于mongo镜像的详细说明

基于docker安装mongo比较简单,但是如果给mongo开启密码访问,就有点复杂。 

参考:https://blog.csdn.net/diyiday/article/details/77870004

 

 1:docker run --name mongodb -p 27017:27017 -v $PWD/db:/data/db -d daocloud.io/mongo
 2:docker run -itd --privileged --name="$1"  -p "$2":27017 -v /alex/data/"$1"/conf:/data/configdb -v /alex/data/"$1"/data:/var/log/mongodb/  docker.io/mongo --auth
mongo开启校验
- 2.1:docker-enter mongo实例里面,(docker exec -it mongo bash 表示bash方式进入mongo容器)
- 2.2:use admin(输入命令进入admin数据库)
- 2.3:db.createUser({ user: 'mongo-admin', pwd: 'mongo-password', roles: [ { role: "root", db: "admin" } ] });


具体操作如下:

1、拉取docker-mongo官方镜像
 docker pull mongo
1
2、基于mongo3.x部署容器
docker run --name mongo -p 27017:27017 -v /data/database/mongotest:/data -d mongo:3.2.14 --auth

–antu的参数的意义是开启密码授权访问。

[root@centos ~]# docker run --name mongo4 -p 27019:27017 -v /data/database/mongotest:/data -d mongo:3.2.14 --auth
7ef3e635091f0671bad3ac9505cafc0444d2ac41dbfe1b2e0bdc149de3bd1fff

3、开启密码访问验证。
开启密码访问验证,需要开启mongo的admin数据库,切换到mongo的admin数据库 
直接使用docker命令进入:

docker exec -it mongo bash
1
docker exec -it mongo bash 表示bash方式进入mongo容器。

进入后输入mongo命令进入mongo数据库

root@1c46563d7d36:/# mongo
MongoDB shell version: 3.2.14
connecting to: test
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
1
之后创建一个用户

db.createUser({ 
    user: 'mongo-admin', 
    pwd: 'mongo-password', 
    roles: [ { role: "root", db: "admin" } ] });
 db.auth("mongo-admin","mongo-password")
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")
执行之后,为testdb数据库创建了密码访问。 
开启了用户名和密码访问之后,mongo数据可以匿名连接,但是无法操作数据库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值