MongoDB在admin庫下面執行了db.dropAllUsers()導致沒有系統管理權限要如何處理

來源:互聯網
上載者:User

標籤:先來   哪些   led   name   mission   gap   config   授權   系統管理權限   

測試的時候在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()為高危操作,千萬不要在生產環境執行

MongoDB在admin庫下面執行了db.dropAllUsers()導致沒有系統管理權限要如何處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.