MongoDB: Sunucuda başlangıç ​​uyarıları var '' Veritabanı için erişim kontrolü etkinleştirilmedi ''


91

Bugün ilk olarak MongoDB 3.4.1'i kurdum. Ancak onu başlatıp MongoDB kabuğunu kullandığımda bana aşağıdaki uyarıları verdi:

C:\Users\hs>"C:\Program Files\MongoDB\Server\3.4\bin\mongo.exe
MongoDB shell version v3.4.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.1
Server has startup warnings:
2017-01-12T21:19:46.941+0800 I CONTROL  [initandlisten]
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-01-12T21:19:46.942+0800 I CONTROL  [initandlisten]

bilgisayarım Microsoft Windows [ version 10.0.14393].



6
Bu neredeyse başka bir sorunun mükemmel bir kopyası. Bunu geçen yıl farklı bir kullanıcı adıyla zaten sordunuz mu? Farklı olan tek şey, Windows'un kullanıcı adı ve sürümüdür. Bakınız: stackoverflow.com/questions/36660117/…
Joseph Ferris

@JosephFerris, Evet, bu stackoverflow.com/questions/36660117/… için çoğaltmadır ve bu çoğaltma nedeniyle bu soru kapandı.
Lakmal Vithanage

Yanıtlar:


138

Mongodb v3.4

Güvenli bir veritabanı oluşturmak için aşağıdakileri yapmanız gerekir:

İşlemi başlatan kullanıcının izinleri olduğundan ve dizinlerin mevcut olduğundan emin olun (/data/db bu durumda) .

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

mongod --port 27017 --dbpath /data/db

2) Örneğe bağlanın.

mongo --port 27017

3) Kullanıcı yöneticisini oluşturun (yönetici kimlik doğrulama veritabanında) .

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

4) MongoDB örneğini erişim kontrolü ile yeniden başlatın.

mongod --auth --port 27017 --dbpath /data/db

5) Kullanıcı yöneticisi olarak bağlanın ve kimlik doğrulaması yapın.

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

6) Dağıtımınız için gereken ek kullanıcılar oluşturun (örneğin test kimlik doğrulama veritabanında) .

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

7) myTester olarak bağlanın ve kimlik doğrulaması yapın.

mongo --port 27017 -u "myTester" -p "xyz123" --authenticationDatabase "test"

Temel olarak burada resmi belgelerin kısa versiyonunu açıkladım: https://docs.mongodb.com/master/tutorial/enable-authentication/


1
Söylediğin gibi ama tek sorun şudur ki, her seferinde veya bir defa geçmek zorunda. eğer her seferinde servis ile nasıl verilir, çünkü bir sunucuda bu sudo servisini beğenmek istiyorum MongoDB start?
suresh pareek

6
@sureshpareek Her seferinde iletmek istemiyorsanız, bunu mongodb.conf dosyasında yapılandırabilirsiniz, daha fazla bilgiyi burada bulabilirsiniz: docs.mongodb.com/manual/reference/configuration-options/…
basickarl

1
@sureshpareek Sorun değil dostum! Bununla ilgili daha fazla bilgi edinmek istiyorsanız buraya bakın: stackoverflow.com/a/42929869/1137669 Biraz daha ayrıntılı olarak açıklıyorum.
basickarl

İlk adımda başarısız oldum.
V3.6.5 sürümüydüm

8
Cidden çocuklar ... Neden security.authorizationgirişi etkinleştirmek için söylemiyorsunuz mongod.conf??????
John

-6

Eski db klasörünüzü silmeniz ve yenisini yeniden oluşturmanız gerekir. Sorununuzu çözecektir.

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.