MongoDB用户认证authSource

文章目录

authSource

MongoDB用户认证逻辑与以往我认知的关系型数据库逻辑不太一样,多了一层用户与数据库关系的绑定。

  • 在建立用户时,需要先指定数据库,则存在一个概念:用户归属于数据库。额外,依然是可以为用户赋需要的权限,例如对某个数据库具有读、些权限。

  • 在连接时,会根据请求中的authSource参数的值(数据库)去校验是否有这样的用户在该数据库下。如果请求url中未携带authSource参数,则默认去找admin数据库。

javascript 复制代码
// 建立用户
use admin  // 在该数据库下创建的用户属于该数据库,连接时必须指定认证数据库。在admin数据库创建可以管理多个数据库的用户
db.createUser({
  user: "zyRW_admin_zy",
  pwd: "123456",
  roles: [
    { role: "readWrite", db: "zy" }
  ]
})

// 赋权限
db.grantRolesToUser("zyRW", [
  { role: "read", db: "local" }
])

// 收回权限
db.revokeRolesFromUser("zyRW", [
  { role: "read", db: "local" }  // 删除local库的读写权限
])

遇到的问题

使用mongodb-driver-sync-4.2.1版本的驱动连接不同版本的Mongodb时:

复制代码
当连接8.0版本的Mongodb时,若用户归属于admin数据库,authSource参数并未生效;
当连接8.0版本的Mongodb时,若用户归属于zy数据库,authSource参数生效; (结合上述测试,怀疑是先去admin数据库找用户,若未找到,则在参数配置的数据库找用户,待验证)
当连接4.0版本的Mongodb时,无论用户归属于什么数据库,authSource参数均生效。

当给连接驱动升级到适配8.0版本的Mongodb时不存在该问题。

相关推荐
草明9 小时前
clickhouse 检查是否有删除语句在执行
数据库·clickhouse
风语者日志9 小时前
攻防世界—easyupload
数据库·web安全·ctf·小白入门
彡皮9 小时前
qt实用学习案例:数据库设计+图表显示+model-view模式+样式表定制
数据库·qt·学习
码出钞能力10 小时前
如何屏蔽GORM个别sql的日志
数据库·sql·gorm
TDengine (老段)10 小时前
TDengine 数字函数 RADIANS 用户手册
大数据·数据库·sql·物联网·时序数据库·tdengine·涛思数据
小蒜学长10 小时前
springboot基于JAVA的二手书籍交易系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
野犬寒鸦10 小时前
从零起步学习MySQL || 第七章:初识索引底层运用及性能优化(结合底层数据结构讲解)
java·数据库·后端·mysql·oracle
6极地诈唬11 小时前
【sqlite】WAL初探
数据库·sqlite
PieroPc11 小时前
用Python Streamlit sqlite3 写一个简单博客
数据库·python·sqlite
啊森要自信11 小时前
【MySQL 数据库】使用C语言操作MySQL
linux·c语言·开发语言·数据库·mysql