千家信息网

MongoDB在admin库下面执行了db.dropAllUsers()导致没有管理权限要如何处理

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,测试的时候在amin库下面执行了db.dropAllUsers()操作,然后所有管理员用户都没有了,执行什么操作都提示Error: not authorized on admin to execute
千家信息网最后更新 2025年11月08日MongoDB在admin库下面执行了db.dropAllUsers()导致没有管理权限要如何处理

测试的时候在amin库下面执行了db.dropAllUsers()操作,然后所有管理员用户都没有了,执行什么操作都提示Error: not authorized on admin to execute command...
下面来介绍一下出现这种情况要如何处理


先来看一下当前mongo实例的配置文件:

cat /etc/mongo.cnf systemLog:  destination: file  logAppend: true  path: /data/mongodata/log/mongo.log  logRotate: rename  timeStampFormat: ctime  quiet: true storage:  dbPath: /data/mongodata/data  journal:    enabled: true    commitIntervalMs: 100  directoryPerDB: true  syncPeriodSecs: 60  engine: wiredTiger  wiredTiger:    engineConfig:      cacheSizeGB: 20      journalCompressor: snappy    indexConfig:      prefixCompression: trueprocessManagement:  fork: true  pidFilePath: /data/mongodata/data/mongo.pidnet:  port: 27017  bindIp: 0.0.0.0  maxIncomingConnections: 3000  wireObjectCheck: true  ipv6: false  unixDomainSocket:                  enabled: false security:  keyFile: /data/mongodata/data/keyfile  authorization: enabledoperationProfiling:  slowOpThresholdMs: 100  mode: slowOp 

尝试1:改配置文件(失败)
在网上搜索后得知启动mongod服务的时候不指定--auth参数就可以了,看了mongod的服务启动脚本是以mongod -f /etc/mongo.cnf的方式启动的,我在想是不是把配置文件认证相关的配置禁掉就可以了,于是把authorization: enabled改成authorization: disabled,再重新启动mongod服务,发现还是需要认证

尝试2:指定参数启动服务(成功)
改配置文件不行的话就只能指定参数启动mongod服务了,当直接执行mongod --port 27017 --dbpath /data/mongodata/data 时报错:

Detected data files in /data/mongodata/data created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.

然后根据配置文件加上storage engine为wiredTiger的相关参数,再次启动mongod --port 27017 --dbpath /data/mongodata/data --storageEngine wiredTiger --wiredTigerCacheSizeGB 20 --wiredTigerJournalCompressor snappy,发现还有报错:
exception in initAndListen: 72 Requested option conflicts with current storage engine option for directoryPerDB; you requested false but the current server storage is already set to true and cannot be changed, terminating,
根据报错提示再加上directoryperdb的参数启动:mongod --port 27017 --dbpath /data/mongodata/data --storageEngine wiredTiger --wiredTigerCacheSizeGB 20 --wiredTigerJournalCompressor snappy --wiredTigerIndexPrefixCompression 1 --directoryperdb,最后重启成功,现在就可以在amdin库授权root用户了
提示:
1,具体要带哪些参数要根据配置文件来调整,如果指定的参数和实例原先的参数有冲突的话会起不来,不过不要紧,mongodb会有详细的日志输出,根据提示调整即可
2,如果mongod服务启动脚本不是用root用户来启的,则最好切到对应的帐号再启动,不然授权完后再次用脚本启时会报Permission denied的错误

!!注意:db.dropAllUsers()为高危操作,千万不要在生产环境执行

参数 配置 文件 服务 提示 用户 脚本 成功 再次 实例 时候 尝试 认证 调整 管理 不行 不要紧 情况 方式 日志 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 我的世界勇者服务器主页背景音乐 数据库标点符号什么时候放 ip地址被网页服务器封了 花都区软件开发价格 阿里云服务器办理icp许可 网络安全防护系统网盘下载 华为武长地区通用软件开发 网络安全攻击的主要方式 aftv连接服务器失败怎么办 数据库的引用要怎么写参考格式 如何使用c3p0连接数据库 哪些大型软件开发失败 怎么提高数据库的安全性 昌平区管理软件开发大概费用 安徽私有服务器技术指导 网络安全日宣传黑板报 网上读书软件开发 新型网络技术 delete删除数据库字段 万兆服务器可以当家庭电脑吗 闵行区品牌数据库系统研发职能 多媒体技术与网络技术的区别 安徽服务器防火墙多少钱 花都区软件开发价格 600字网络安全演讲稿 网络安全检测课程 本科论文数据库可以在哪儿获取 财贸双全.net服务器 页面乱码数据库正常 网络安全防卫战全集
0