相关文章推荐
阳光的皮带  ·  [ 后端篇 ] 09 - AWS ...·  1 年前    · 
潇洒的领结  ·  手把手带你用Python完成一个能写进简历的 ...·  2 年前    · 
冷冷的黑框眼镜  ·  教你实现一个非常有趣的自动化脚本“循环执行” ...·  2 年前    · 
拉风的领结  ·  jQuery ...·  2 年前    · 
爱旅游的肉夹馍  ·  云计算 - ...·  2 年前    · 
Code  ›  MongoDB 用户名密码登录 认证登陆开发者社区
数据库 mongodb mongodb命令 用户名
https://cloud.tencent.com/developer/article/1446551
卖萌的小马驹
2 年前
作者头像
拓荒者
0 篇文章

MongoDB 用户名密码登录 认证登陆

前往专栏
腾讯云
备案 控制台
开发者社区
学习
实践
活动
专区
工具
TVP
文章/答案/技术大牛
写文章
社区首页 > 专栏 > 运维经验分享 > 正文

MongoDB 用户名密码登录 认证登陆

发布 于 2019-06-15 15:17:58
5.9K 0
举报

MongoDB 用户名密码登录

kimoCHG 关注

1.9 2017.01.07 23:44* 字数 1014 阅读 58236评论 4喜欢 37

Mongodb enable authentication

MongoDB 默认直接连接,无须 身份验证 ,如果当前机器可以公网访问,且不注意Mongodb 端口(默认 27017)的开放状态,那么Mongodb就会产生安全风险,被利用此配置漏洞,入侵 数据库 。

容易遭受入侵的环境

  • 使用默认 mongod 命令启动 Mongodb
  • 机器可以被公网访问
  • 在公网上开放了 Mongodb 端口

安全风险

  • 数据库隐私泄露
  • 数据库被清空
  • 数据库运行缓慢

解决方案

1. 禁止公网访问 Mongodb 端口

1.1 网络配置

由于网络配置因人而异,需要根据自己实际环境进行配置,不作冗述。大致可以从以下方面禁止。

  • 在路由器中关闭端口转发
  • 防火墙 iptables 禁止访问

1.2 验证端口能否访问方式

在外网机器命令行中运行

telnet your.machine.open.ip 27017

2. 启用验证

2.1 创建用户管理员账户

当前数据库版本:Mongodb 3.4

使用 mongod 启动数据库 新建终端

mongod --port 27017 --dbpath /data/db1

参数默认可以不加,若有自定义参数,才要加上,下同。

另起一个终端,运行下列命令

mongo --port 27017
use admin
db.createUser(
    user: "adminUser",
    pwd: "adminPass",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
)

管理员创建成功,现在拥有了用户管理员 用户名:adminUser 密码:adminPass 然后,断开 mongodb 连接, 关闭数据库 两个终端下 <C - c>

2.2 Mongodb 用户验证登陆

启动带访问控制的 Mongodb 新建终端

mongod --auth --port 27017 --dbpath /data/db1

现在有两种方式进行用户身份的验证 第一种 (类似 MySql) 客户端连接时,指定用户名,密码,db名称

mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"

第二种 客户端连接后,再进行验证

mongo --port 27017
use admin
db.auth("adminUser", "adminPass")
// 输出 1 表示验证成功

2.3 创建普通用户

过程类似创建管理员账户,只是 role 有所不同

use foo
db.createUser(
    user: "simpleUser",
    pwd: "simplePass",
    roles: [ { role: "readWrite", db: "foo" },
             { role: "read", db: "bar" } ]
)

现在我们有了一个普通用户 用户名:simpleUser 密码:simplePass 权限:读写数据库 foo, 只读数据库 bar。

注意

 
推荐文章
阳光的皮带  ·  [ 后端篇 ] 09 - AWS DynamoDB Pagination(分页)_dynamodb分页-CSDN博客
1 年前
潇洒的领结  ·  手把手带你用Python完成一个能写进简历的项目(实战篇)_Python进阶者的博客-CSDN博客
2 年前
冷冷的黑框眼镜  ·  教你实现一个非常有趣的自动化脚本“循环执行”的实例 - AirtestProject - 博客园
2 年前
拉风的领结  ·  jQuery 改变页面字体的大小_jquery 页面字体大小加减_aimartt的博客-CSDN博客
2 年前
爱旅游的肉夹馍  ·  云计算 - Android通知栏介绍与适配总结(上篇) - 网易数帆社区专栏 - SegmentFault 思否
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号