0

0

MongoDB中dbAdmin角色为什么不能读写数据

P粉602998670

P粉602998670

发布时间:2026-03-13 09:08:31

|

520人浏览过

|

来源于php中文网

原创

dbAdmin角色不能读写数据,因为它仅管理数据库结构(如创建集合、删除索引),不包含find、insert等数据操作权限;需组合readWrite等角色才能实现读写。

mongodb中dbadmin角色为什么不能读写数据

dbAdmin角色为什么不能读写数据

因为dbAdmin角色**只管数据库结构管理,不管数据访问**——它能创建集合、删索引、修改分片配置,但默认连find()insert()都不被允许。

dbAdmin实际能做什么、不能做什么

这是最容易混淆的点:名字带“Admin”,容易误以为是“数据库管理员”,其实它更接近“DBA中的运维侧”。官方定义明确排除了数据操作权限。

  • ✅ 能执行:createCollectiondropDatabasereIndexcollMod
  • ❌ 不能执行:findinsertupdatedeletecount
  • ⚠️ 注意:db.serverStatus()这类集群级命令也不行,哪怕在admin库下运行,也会报not authorized on admin to execute command

怎么让一个用户既能管结构又能读写数据

必须组合角色,不能只靠dbAdmin。MongoDB不支持“叠加继承”,得显式授予多个角色。

Joker AIx
Joker AIx

一站式AI创意生产平台,覆盖图像、视频、音频、文案全品类创作

下载
  • 最常用组合:["dbAdmin", "readWrite"](同一数据库下)
  • 如果还要跨库查系统表或看慢日志,加"clusterMonitor"
  • 创建示例:
    use myapp; db.createUser({ user: "appadmin", pwd: "xxx", roles: ["dbAdmin", "readWrite"] });
  • ⚠️ 坑:别在admin库下给用户授dbAdmin,指望它管其他库——dbAdmin只对当前认证库生效;要管所有库,得用dbAdminAnyDatabase(但需authSource=admin

为什么连db.stats()都可能失败

看起来只是“查个统计”,但它底层会触发对集合元数据和存储引擎状态的访问,部分场景被划归到dbAdmin范围,但不是全部。尤其在WiredTiger引擎+启用journal时,db.stats()可能隐式调用需要read权限的操作。

  • 现象:db.stats()not authorized,但db.getCollectionNames()却成功
  • 原因:前者涉及存储层指标,后者只是目录列表
  • 解法:补"read"角色,或直接用"readWrite"(它已包含read

真正麻烦的不是权限配不配得上,而是错误提示太笼统——not authorized背后可能是角色缺失、authSource错位、甚至磁盘满导致的伪权限错误。先确认db.runCommand({ connectionStatus: 1 })返回的authInfo里有没有你预期的角色,再往下查。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

203

2023.11.20

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

287

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

222

2023.12.29

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

287

2023.07.18

mongodb启动命令
mongodb启动命令

MongoDB 是一种开源的、基于文档的 NoSQL 数据库管理系统。本专题提供mongodb启动命令的文章,希望可以帮到大家。

267

2023.08.08

MongoDB删除数据的方法
MongoDB删除数据的方法

MongoDB删除数据的方法有删除集合中的文档、删除整个集合、删除数据库和删除指定字段等。本专题为大家提供MongoDB相关的文章、下载、课程内容,供大家免费下载体验。

161

2023.09.19

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1006

2023.11.02

mongodb有哪些应用领域
mongodb有哪些应用领域

mongodb 的应用领域涵盖广泛,包括内容管理系统、社交媒体、分析、移动应用、物联网、金融科技、医疗保健和广告技术等领域,因其灵活性、可扩展性和易用性而广受欢迎。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

345

2024.04.02

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号