基于docker的mongo-db开启授权密码访问
基于docker安装mongo比较简单,但是如果给mongo开启密码访问,就有点复杂。具体操作如下:1、拉取docker-mongo官方镜像 docker pull mongo:3.2.142、基于mongo3.x部署容器docker run --name mongo -p 27017:27017 -v /data/database/mongotest:/data -d mongo:3.2.1
·
基于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 --auth
7ef3e635091f0671bad3ac9505cafc0444d2ac41dbfe1b2e0bdc149de3bd1fff
3、开启密码访问验证。
开启密码访问验证,需要开启mongo的admin数据库,切换到mongo的admin数据库
直接使用docker命令进入:
docker exec -it mongo bash
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
之后创建一个用户
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数据可以匿名连接,但是无法操作数据库。
更多推荐
已为社区贡献13条内容
所有评论(0)