You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB 2.0.14授权错误求助:执行listIndexes命令无权限

解决MongoDB授权错误(listIndexes命令未授权)

错误日志

[0] Unhandled rejection MongoError: (Unauthorized) not authorized on admin to execute command { listIndexes: "sessions", cursor: {  } }

[0]     at MongoError.create (/Users/biggahd/Desktop/Mars-EMS-1/backend/node_modules/mongodb-core/lib/error.js:31:11)

[0]     at queryCallback (/Users/biggahd/Desktop/Mars-EMS-1/backend/node_modules/mongodb-core/lib/cursor.js:212:36)

[0]     at /Users/biggahd/Desktop/Mars-EMS-1/backend/node_modules/mongodb-core/lib/connection/pool.js:469:18

[0]     at process.processTicksAndRejections (node:internal/process/task_queues:77:11)

问题背景

  • 已在MongoDB Atlas自定义角色中开启listIndexes权限,甚至开放所有操作,仍触发上述授权错误
  • 强制使用MongoDB 2.0.14版本,怀疑是版本兼容问题
  • 使用Sails.js v1.5.7

排查与解决步骤

1. 确认权限范围匹配

错误提示在admin库上无权限执行listIndexes,需检查:

  • 自定义角色是否明确对admin库(而非仅业务库)授予权限
  • 角色权限的作用范围是否设置为「所有数据库」,或至少包含admin库

2. 版本兼容性问题(核心排查点)

MongoDB 2.0.14是2012年发布的老旧版本,与MongoDB Atlas的现代权限系统存在根本性不兼容:

  • 早期MongoDB的授权逻辑与当前Atlas的角色权限模型差异极大,旧版本驱动无法正确识别Atlas的权限配置
  • Atlas集群默认不支持如此老旧的客户端协议,权限校验环节会出现异常

建议:

  • 若业务允许,优先升级MongoDB版本至3.0+,这是解决问题的根本方案
  • 若必须保留2.0.14版本,放弃Atlas托管,改用本地部署的MongoDB 2.0.14,避免跨版本权限模型冲突

3. 检查Sails.js连接配置

确认Sails.js的MongoDB连接配置:

  • 连接字符串是否正确携带认证信息,格式示例:mongodb://<user>:<password>@<host>:<port>/<db>?authSource=admin
  • 确认authSource参数设置为admin,MongoDB 2.0默认使用admin库作为认证源
  • 若业务操作目标不是admin库,需确保角色对目标库也有对应权限

4. 手动验证用户权限

通过Mongo Shell连接集群,执行命令验证用户权限细节:

use admin
db.runCommand({ usersInfo: "<你的用户名>", showPrivileges: true })

查看返回结果中是否包含listIndexes权限,且作用范围覆盖sessions集合或admin库。


内容的提问来源于stack exchange,提问作者Dženis H.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:35:20