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

来源:互联网 发布:java中多继承 编辑:程序博客网 时间:2024/06/06 01:57

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

1、拉取docker-mongo官方镜像

 docker pull mongo:3.2.14

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 --auth7ef3e635091f0671bad3ac9505cafc0444d2ac41dbfe1b2e0bdc149de3bd1fff

3、开启密码访问验证。

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

docker exec -it mongo bash

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

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

root@1c46563d7d36:/# mongoMongoDB shell version: 3.2.14connecting to: testWelcome 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: 'mongo-admin',     pwd: 'mongo-password',     roles: [ { role: "root", db: "admin" } ] });
 db.auth("mongo-admin","mongo-password")

role后面的参数参考,可根据时间情况选择:

Read:允许用户读取指定数据库readWrite:允许用户读写指定数据库dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profileuserAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。root:只在admin数据库中可用。超级账号,超级权限

之后可以创建普通用户执行如下三条语句即可:

use testdb.createUser({ user: 'test', pwd:'test', roles: [ {role:"readWrite",db:"testdb"}]});db.auth("test","test")

执行之后,为testdb数据库创建了密码访问。
开启了用户名和密码访问之后,mongo数据可以匿名连接,但是无法操作数据库。