MongoDB varsayılan kullanıcı ve şifre nedir?


103

Yerel ve üretimde aynı bağlantı dizesini kullanıyorum. Bağlantı dizesi olduğundamongodb://localhost/mydb

Kullanıcı adı ve şifre nedir? Bu şekilde tutmak güvenli mi?

Yanıtlar:


211

Varsayılan olarak mongodb'un etkin bir erişim kontrolü yoktur, bu nedenle varsayılan kullanıcı veya şifre yoktur.

Erişim denetimini etkinleştirmek için, komut satırı seçeneğini --authveya security.authorization yapılandırma dosyası ayarını kullanın.

Aşağıdaki prosedürü kullanabilir veya MongoDB belgelerinde Kimlik Doğrulamayı Etkinleştirme bölümüne bakabilirsiniz .

Prosedür

  1. MongoDB'yi erişim kontrolü olmadan başlatın.

    mongod --port 27017 --dbpath /data/db1
    
  2. Örneğe bağlanın.

    mongo --port 27017
    
  3. Kullanıcı yöneticisini oluşturun.

    use admin
    db.createUser(
      {
        user: "myUserAdmin",
        pwd: "abc123",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    
  4. MongoDB örneğini erişim denetimiyle yeniden başlatın.

    mongod --auth --port 27017 --dbpath /data/db1
    
  5. Kullanıcı yöneticisi olarak doğrulayın.

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \
      --authenticationDatabase "admin"
    

17
Kullanıcı userAdminAnyDatabase rolüyle oluşturulursa, herhangi bir veritabanı oluşturmak imkansız olacaktır. Bu nedenle, roller bölümü şöyle olmalıdır: roller: [{role: "root", db: "admin"}]
georgeos


1
dbpath kullanımını bulmak istiyorsanız: grep dbPath /etc/mongod.conf
rckd

13

@Camilo Silva'nın daha önce bahsettiği şeye ek olarak, veritabanları oluşturmak, okumak, yazmak vb. İçin ücretsiz erişim vermek istiyorsanız, ancak bir kök rol oluşturmak istemiyorsanız, 3. adımı aşağıdakilerle değiştirebilirsiniz:

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, 
             { role: "dbAdminAnyDatabase", db: "admin" }, 
             { role: "readWriteAnyDatabase", db: "admin" } ]
  }
)


1

Önceden sağlanan yanıtlara ek olarak, db'niz zaten erişim denetimi ( --authanahtar) ile başlatılmışsa, ilk kullanıcıyı oluşturmak için 'localhost istisnası' yaklaşımını izlemektir . Bunu yapmak için, sunucuya localhost erişiminizin olması ve ardından şunu çalıştırmanız gerekir:

mongo
use admin
db.createUser(
 {
     user: "user_name",
     pwd: "user_pass",
     roles: [
           { role: "userAdminAnyDatabase", db: "admin" },
           { role: "readWriteAnyDatabase", db: "admin" },
           { role: "dbAdminAnyDatabase", db: "admin" }
        ]
 })

MongoDB belgelerinde belirtildiği gibi:

Localhost istisnası, erişim kontrolünü etkinleştirmenize ve ardından sistemdeki ilk kullanıcıyı oluşturmanıza olanak tanır. Localhost istisnasıyla, erişim kontrolünü etkinleştirdikten sonra, localhost arayüzüne bağlanın ve admin veritabanında ilk kullanıcıyı oluşturun. İlk kullanıcının, userAdmin veya userAdminAnyDatabase rolüne sahip bir kullanıcı gibi diğer kullanıcıları oluşturma ayrıcalıklarına sahip olması gerekir. Localhost istisnasını kullanan bağlantılar, yalnızca yönetici veritabanındaki ilk kullanıcıyı oluşturma erişimine sahiptir.

İşte belgelerin o bölümünün bağlantısı .

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.