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: true

processManagement:
  fork: true
  pidFilePath: /data/mongodata/data/mongo.pid

net:
  port: 27017
  bindIp: 0.0.0.0
  maxIncomingConnections: 3000
  wireObjectCheck: true
  ipv6: false
  unixDomainSocket:
                  enabled: false
security:
  keyFile: /data/mongodata/data/keyfile
  authorization: enabled

operationProfiling:
  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()为高危操作,千万不要在生产环境执行

原文地址:http://blog.51cto.com/chenql/2072159

时间: 2024-10-10 10:38:29

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

mongodb 非 admin 库 认证登陆失败 原因(百度好多都 是渣)db.addUser() 请走开。

首先先晒一下log 日志错误信息 2016-07-13T22:19:43.667+0800 I ACCESS [conn4] authenticate db: finddemo { aut henticate: 1, nonce: "xxx", user: "user1", key: "xxx" } 2016-07-13T22:19:43.668+0800 I ACCESS [conn4] Failed to authenticate [emai

执行nova-manage db sync时出错,提示’Specified key was too long; max key length is 1000 bytes’

执行nova-manage db sync时出错: 2012-03-24 14:07:01 CRITICAL nova [-] (OperationalError) (1071, ‘Specified key was too long; max key length is 1000 bytes’) ‘\nCREATE TABLE user_project_association (\n\tcreated_at DATETIME, \n\tupdated_at DATETIME, \n\tdele

mongoDB的复制集5----复制集安全(认证,用户,权限)

一.什么是认证  如何开启认证    1).auth=true(在配置文件里增加)    2).keyFile(建议添加到配置文件里) #如果设置了auth=true,但第一次没有创建用户就启动实例怎么办# 在配置文件里增加如下 echo "setParameter=enableLocalhostAuthBypass=1" >> /usr/local/mongoDB/conf/28001.conf#然后用本地ip连接mongo localhost:28001  auth与k

[转]Oracle DB 通过SQL 优化管理性能

? 将SQL 优化指导用于: – 确定使用资源最多的 SQL 语句 – 优化使用资源最多的 SQL 语句 ? 使用SQL 访问指导优化工作量 SQL 优化 SQL 优化进程 ? 确定没有很好地优化的SQL 语句. ? 优化各条语句. ? 优化整个应用程序. 一般情况下,效果最明显的优化工作是SQL 优化.没有很好地优化的SQL 会不必要地使用过多资源.这种低效率会降低可伸缩性.使用更多的OS 和数据库资源并增加响应时间.要对没有很好地优化的SQL 语句进行优化,必须先确定这些语句,然后再进行优化

SQL SERVER 2012 执行计划走嵌套循环导致性能问题的案例

原文:SQL SERVER 2012 执行计划走嵌套循环导致性能问题的案例 开发人员遇到一个及其诡异的的SQL性能问题,这段完整SQL语句如下所示: declare @UserId             INT declare @PSANo              VARCHAR(200) declare @ShipMode           VARCHAR(10) declare @CY_FLAG            VARCHAR(1) declare @PO            

Django Admin Cookbook-35如何使用带有大量对象的FK管理模型

35.如何使用带有大量对象的FK管理模型? 你可以通过如下代码创建大量Category对象: categories = [Category(**{"name": "cat-{}".format(i)}) for i in range(100000)] Category.objects.bulk_create(categories) 现在,Category拥有超过100000个对象,当您进入Hero修改页面是时,类别字段将是一个包含100000个选择下拉列表.这将使页

mongodb 重做从库

导出备份文件 停掉从库,注释 #slave=true #source 启动mongo,删除需要恢复的库 use mydb; db.dropDatabase(); 执行恢复 停掉mongo,打开注释 slave=true #source 重新启动从库 rs.slaveOk();

MongoDB之整库备份还原单表collection备份还原

cd D:\MongoDB\bin 1整库备份: mongodump -h dbhost -d dbname -o dbdirectory -h:MongDB所在服务器地址,例如:127.0.0.1:27017 -d:需要备份的数据库实例,例如:wlwdb -o:备份的数据存放位置,例如:D:\MongoDB\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个wlwdb目录,这个目录里面存放该数据库实例的备份数据. eg: mongodump -h 127

MongoDB常用操作一查询find方法db.collection_name.find()

来:http://blog.csdn.net/wangli61289/article/details/40623097 https://docs.mongodb.org/manual/reference/sql-aggregation-comparison/ [第一个查询参数] find函数第一个参数是一个文档,其中给出了我们要查询集合中什么样文档的描述.如果我们要查询所有文档,可以不带任何参数调用find函数,或第一个参数为空文档{},如下例: [javascript] view plainc