基于Docker的MongoDB实现授权访问的方法
作者:mrr 发布时间:2023-07-17 16:27:30
基于Docker部署一个数据库实例通常比直接在服务器上安装数据库还要简单,Gevin在开发环境中经常使用基于docker的数据库服务,docker也渐渐成为Gevin在Linux上安装MongoDB的首选方式,由于MongoDB默认是不用通过认证就能直接连接的,出于安全考虑,在公网上部署MongoDB时,务必设置authentication机制,以避免类似 "黑客赎金" 问题的发生。
那么,基于Docker拉起的MongoDB,如何实现通过用户名密码访问指定数据库呢?方法很简单,但前提是要了解MongoDB授权访问的机制,参考资料如下:
Enable Auth
Authentication
Role-Based Access Control
只要了解MongoDB授权访问机制,直接按下面步骤一步步执行就可以了。
1、创建MongoDB实例
为了少写几个命令,Gevin使用Docker Compose来创建MongoDB实例:
version: '2'
services:
mongo:
# restart: always
image: mongo:3.2
command: [--auth]
ports:
- "37017:27017"
volumes:
- /data/db
运行如下命令:
docker-compose up -d
#----------
# Result:
#----------
# Creating mongodb_mongo_1
docker-compose ps
#----------
# Result:
#----------
# Name Command State Ports
# --------------------------------------------------------------------------
# mongodb_mongo_1 /entrypoint.sh --auth Up 0.0.0.0:37017->27017/tcp
2、创建用户管理员
首先要进入MongoDB容器内部,连上MongoDB,并切换到 admin 数据库,这步可以通过下面命令完成:
docker exec -it mongodb_mongo_1 mongo admin
#----------
# Result:
#----------
# MongoDB shell version: 3.2.12
# connecting to: admin
# 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
然后创建一个user administrator:
db.createUser({
user: 'mongo-admin',
pwd: 'admin-initial-password',
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
#----------
# Result:
#----------
Successfully added user: {
"user" : "mongo-admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
3、创建访问指定数据库的用户
创建了user administrator后,需要退出mongodb,并重新连接,然后用user administrator 访问admin数据库,并为目标数据库创建目标用户,其具体步骤如下:
(1)重新连接MongoDB数据库
退出容器,重新用下面命令进入容器即可:
docker exec -it mongodb_mongo_1 mongo admin
#----------
# Result:
#----------
MongoDB shell version: 3.2.12
connecting to: admin
(2)授权登录admin
db.auth("mongo-admin","admin-initial-password")
(3)创建访问指定数据库的用户
# Step1: switch to the specified database:
use octblog
# Step2: create a user
db.createUser(
{
user: "gevin",
pwd: "gevin",
roles: [ { role: "readWrite", db: "octblog" },
{ role: "readWrite", db: "octblog-log" } ]
}
)
#----------
# Result:
#----------
#Successfully added user: {
# "user" : "gevin",
# "roles" : [
# {
# "role" : "readWrite",
# "db" : "octblog"
# },
# {
# "role" : "readWrite",
# "db" : "octblog-log"
# }
# ]
#}
这一步的目标是为 octblog 这个数据库创建一个授权访问用户,首先要从 admin 数据库切换到 octblog 数据库,然后才能为 octblog 添加授权访问用户
注:
上面所以操作均为user administrator执行的,即第二步创建的 mongo-admin user administrator的作用是管理用户,MongoDB下的每个数据库,用户都被它管理,除此外,它基本没什么更多权限做其他事情MongoDB没有通常意义的超级用户的概念,octblog的授权用户只能被user administrator创建,而user administrator只能登陆admin数据库,所以才会有上面(2)、(3)两步的麻烦。
以上所述是小编给大家介绍的基于Docker的MongoDB实现授权访问的方法网站的支持!


猜你喜欢
- 现在,很多网站都在用基于数据库的内容管理系统(CMS)来制作和管理。CMS有利的一面就是当你有成千上万的页面时,你不用一页页的制作HTML网
- 整理了一些Godaddy主机的Apache转到Tomcat的文档扩展名。因Apache处理的文档受.htaccess 设置的影响,而转到及由
- “很黄,很暴力”事件发端于mop网(www.mop.com)并非偶然,这是mop所提倡的“BT文化”结下的又一个“怪胎”。最近几年来,以互联
- 在Exchange Server 2007中设置邮件的免责声明变得非常简单,只需在“集中传输服务器”上面新建一条传输规则就可以搞定,目前好象
- 原计划于9月初发布的Firefox 3.6 Beta 1一直到10月30日才发布,就在大家关心正式版是否能如期发布时Mozilla发表了一份
- 1、 激愤运用法通过主题的倡导,让大家一致产生赞同、鼓舞、荣耀等心态,或者揭露某事件让会员感觉到耻辱、鄙视‘讨厌的感觉,内容一定是简短完整的
- 前言在用Deepin用户界面的时候,做的是真心的好看,界面效果是真的美观简洁,没有那些花哨的特效,就是刚开始还有点不习惯的,尽量安装的时候电
- 笔者所在的环境是有三十台机器组成的一个小型局域网络,服务器采用 Windows 2000 Server,工作站为Windows 2000 p
- 用Linux主机的网站可以通过.htaccess做301跳转,这个大家都很清楚。如果能对.htaccess的规则非常了解的话,那么使用起来肯
- 日前,诸多期待开展IPTV业务的网络视频公司因受困于牌照,版权等问题,前景难卜。记者采访到,有多家视频公司认为自身在短时期内不可能处理好版权
- 2月9日消息,据国外媒体报道,日前有消息称,Windows Vista SP1将于2月18日发布,而Windows XP SP3将于23日上
- 本文主要介绍在linux服务器如何搭建FastDFS文件服务器。大概分为9个步骤,由于内容较为繁琐。下面带你入坑!首先简单介绍一下FastD
- 核心提示:如果在html中过多的使用 JavaScript、Cookie、会话 ID、框架、DHTML 或 Flash 等复杂功能会使搜索引
- 一,准备工作 1,登录进VPS控制面板,准备好随时重启VPS。 2,关闭Web Server先,过高的负载会导致后面的操作很难进行,甚至直接
- 上周,微软正式宣布了移动平台新品牌Windows Phone。从Windows Mobile 6.5系统开始,用该品牌取代之前的Window
- 11点半,CEO起床了,本来他还想睡下去,一直睡到自然醒,但一个电话把他吵醒了。电话是电信局的一个小姐打过来的,她在那边问,请问你是“千维建
- 为了解决日益严重的手机安全问题,全球领先的手机安全服务公司网秦发布了手机卫士服务。手机卫士是一组永久免费的手机安全和管理工具族,流氓克星是手
- 介绍在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的
- 近日因测试安全产品需要,想调整mariadb的启动用户为root, 经历一番波折后终于成功!注意:以root身份启动mysql是一项非常危险
- 终于决定把邮件系统重新弄一弄了。因为服务器经常出问题,DNS报错,SMTP也经常出问题。最重要的是,因为以前只有两台服务器,这台服务器上充当