继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

MongoDB身份认证机制揭秘!

JavaEdge
关注TA
已关注
手记 403
粉丝 1.4万
获赞 1476

检查MongoDB服务器的身份验证状态,使用MongoDB的shell或者命令行工具。

1 使用MongoDB Shell

1.1 连接到admin数据库

因为大多数身份验证相关的命令需要在admin数据库中运行:

use admin

1.2 检查服务器的身份验证状态

db.runCommand({getParameter: 1, authenticationMechanisms: 1})

如服务器启用身份验证,会看到类似输出:

{
  "authenticationMechanisms" : [
    "SCRAM-SHA-256",
    "SCRAM-SHA-1"
  ],
  "ok" : 1
}

2 使用mongostat

一个监控MongoDB实例的工具。你可以使用它来检查服务器的状态,包括身份验证状态。

  1. 在命令行中输入以下命令
mongostat --uri "mongodb://localhost:27017/admin"

如果服务器启用了身份验证,mongostat会提示你输入用户名和密码。

2 db.auth()

如已连接到MongoDB服务器,db.auth()测试身份验证,如:

3 创建管理员用户

运行命令前,确保MongoDB服务器已经启用了身份验证。否则,这个命令将不会起作用。

创建新用户:

db.createUser({
  user: "admin",
  pwd: "password",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

roles指定用户角色。userAdminAnyDatabase角色允许用户在所有数据库中创建和修改用户。

执行成功的输出:

{
  "ok" : 1
}

可用这个用户名和密码来连接到MongoDB服务器并进行身份验证。

MongoDB 4.0或更高版本,用SCRAM-SHA-256身份验证机制。可在db.createUser()添加mechanisms字段:

db.createUser({
  user: "myUser",
  pwd: "myPassword",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ],
  mechanisms: [ "SCRAM-SHA-256" ]
})

创建用户后,测试身份验证:

db.auth("myUser", "myPassword")

如果身份验证成功,你会看到1,否则0

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化
  • 活动&券等营销中台建设
  • 交易平台及数据中台等架构和开发设计
  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
  • LLM Agent应用开发
  • 区块链应用开发
  • 大数据开发挖掘经验
  • 推荐系统项目

目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP