Mongo'ya süper kullanıcı olarak nasıl girebilir veya kullanıcıları sıfırlayabilirim?


29

İzinlerle oynuyordum ve kendimi Mongo veritabanından kapattım. Bunu kesinlikle bir veritabanına erişim eklemeye çalışarak yaptığımdan eminim ama bunun yerine sadece veritabanına izin veriyorum. Bu yüzden, Mongo veritabanımı etkin bir şekilde kilitledim ve okuduğum her şey, ek kullanıcı ayrıcalığına sahip olduğumda bana süper bir kullanıcı nasıl oluşturulacağını anlatıyor. Şu anda bu ayrıcalığa sahip herhangi bir kullanıcım olduğunu sanmıyorum. Veritabanına tüm erişim olarak girmenin bir yolu var mı? Sunucunun sahibiyim ve root erişimim var.

Yanıtlar:


38

Kendinizi kilitlediyseniz, aşağıdakileri yapmanız gerekir:

  1. MongoDB örneğinizi durdurun
  2. Kimlik doğrulamayı devre dışı bırakmak için --auth ve / veya --keyfile seçeneklerini MongoDB yapılandırmanızdan kaldırın
  3. Kimlik doğrulama olmadan örneği başlatın
  4. Kullanıcıları gerektiği gibi düzenleyin
  5. Kimlik doğrulama etkinken örneği yeniden başlatın

Auth'i silmek yeterli değildi, teşekkürler!
Andrei

14

Önce bir üst kullanıcı eklemeden bir kullanıcı oluşturduğumda da benzer bir sorunla karşılaştım. Aşağıdaki adımlar sorunun çözülmesine yardımcı oldu:

  1. MongoDB yapılandırma dosyasını sudo( sudo vi mongodb.conf) kullanarak açın .
    Dosya /etc/klasörde bulunabilir .
  2. Yorum "auth = true".
  3. MongoDB servisini durdurun ( sudo service mongod stop)
  4. MongoDB servisini başlatın ( sudo service mongod start)
  5. Sonra aşağıdaki komutu kullanarak "root" superuser oluşturun:

    use admin
    
    db.createUser({user:"admin",pwd:"password",roles:[{role:"root",db:"admin"}]});

    Referans için https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. Geri dön ve rahatsız et "auth=true". Durdur ve mongodb servisini Başlat / Yeniden Başlat.


Sana yeterince teşekkür edemem. Projeyi dev sunucuya yüklediğimde bunu anlamaya çalışırken sıkıştım. Çok teşekkür ederim! :)
Woppi

Aynen. Sunucu hata mesajları, bu konuda olağanüstü yararsızdır. Teşekkür ederim!
Tom

7

Bir ile ayarlanan bir çoğaltma kullanıyorsanızkeyfile

Dahili Kimlik Doğrulamayı kullanarak eşlemenin üyeleri arasında güvenlik

Anahtar dosyası, çoğaltmada auth için kullanılır.

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

Bu komutu, mongod'a yönetici olarak giriş yapmak için kullanabilirsiniz:

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

Kelime Sonrası yönetici kullanıcınızı oluşturabilir veya değiştirebilirsiniz.

İç Rol

__systemMongoDB, bu rolü, küme üyelerini temsil eden, çoğaltma küme üyeleri ve mongo örnekleri gibi kullanıcı nesnelerine atar. Rol, sahibine veritabanındaki herhangi bir nesneye karşı herhangi bir işlem yapma hakkı verir.

Bu rolü, istisnai durumlar dışındaki uygulamaları veya insan yöneticilerini temsil eden kullanıcı nesnelerine atamayın.


Bu bilgiyi nereden buldun?
octohedron

2

Bu sorunun cevaplarını kontrol edin, yardımcı olabilirler

https://stackoverflow.com/questions/20117104/mongodb-root-user

Temel olarak, hala sunucuya erişiminiz varsa, Adminveritabanına erişebilirsiniz .

Bu sayfada daha fazlası var http://docs.mongodb.org/v2.4/reference/user-privileges/

2.6 sürümünün bunun tamamen nasıl çalıştığını değiştirdiğini unutmayın. 2.6 için http://docs.mongodb.org/manual/security/ ile daha fazla zaman harcamanız gerekecek


1
Yayında belirtildiği gibi, bulabildiğim tek bilgi bu. Bunu yapmak için
Tony,

0

Mongo'yu durdurmanız, yönetici dosyalarını kaldırmanız ve Mongo'yu başlatmanız gerekir.

sudo service mongod stop
mv /data/admin.* .
sudo service mongod start

2
Bu, yönetimsel kullanıcı veritabanını yok etmek ve "localHostExcetption" üzerinden erişime izin vermek, bir sorununuz olduğunda kullanıcıları yönetmek için iyi bir yol değildir.
daveh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.