Mongodb bağlantı uri üzerinde kimlik doğrulama veritabanı ve hedef veritabanı ayrı ayrı nasıl belirtilir?


13

Ben MongoDB bağlanmak için bu bağlantı adresini kullanarak ediyorum: mongodb://user:password@localhost/admin. Bu kullanacağı adminbot kimlik doğrulama ve hedef veritabanı olarak. Uri'yi adminkimlik doğrulama olarak kullanmayı nasıl yapabilirim, ancak farklı bir veritabanına bağlanmama izin verebilirim? Lütfen örnek olarak aşağıdaki komutu inceleyin:

mongo --host localhost -u user -p password --authentication admin test

Yukarıdaki komut adminkimlik doğrulama veritabanı olarak kullanılır ancak veritabanına bağlanır test. uri'de aynı şeyi nasıl yapabilirim?

Yanıtlar:


26

Evet .. Kolayca!

mongo "mongodb://test:testpwd@localhost/test?authSource=admin"
MongoDB shell version v3.4.6
connecting to: mongodb://test:testpwd@localhost/test?authSource=admin
MongoDB server version: 3.4.6
MongoDB> db
test
MongoDB> 

Hedef DB "base" dizesinin sonuna koymak ve authSource parametresine db kimlik doğrulaması


Evet, tam da aradığım şey bu. Teşekkürler
Joey Yi Zhao

4

Ref:

https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options

Aşağıdaki biçimi kullanmanız gerekecek ve yönetici veritabanı kullanmanız gerekmeyecek.

mongodb: // kullanıcı:? parola @ localhost / test authSource = yönetici

/ veritabanı İsteğe bağlı. Bağlantı dizesi kullanıcı adı: password @ şeklinde kimlik doğrulama bilgilerini içeriyorsa kimlik doğrulaması yapılacak veritabanının adı. / Database belirtilmezse ve bağlantı dizesi kimlik bilgileri içeriyorsa, sürücü yönetici veritabanında kimlik doğrulaması yapar.

testVeritabanında bir kullanıcınız olduğundan emin olun . Bu belgenin 6. bölümüne bakın.

Yetkilendirmeyi Etkinleştir

Dağıtımınız için gereken ek kullanıcıları oluşturun.

Kullanıcıyı oluşturduğunuz veritabanı (bu örnekte test) kullanıcının kimlik doğrulama veritabanıdır. Kullanıcı bu veritabanının kimliğini doğrulasa da, kullanıcının diğer veritabanlarında rolleri olabilir; yani kullanıcının kimlik doğrulama veritabanı kullanıcının ayrıcalıklarını sınırlamaz.

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

Bu uri'yi denedim ama işe yaramıyor. Çünkü testdoğru olmayan kimlik doğrulama veritabanı olarak kullanılmaya çalışılıyor . adminKimlik doğrulama veritabanı olarak kullanmam ve veritabanına bağlanmam gerekiyor test.
Joey Yi Zhao

Değiştirilmiş cevap.
SqlWorldWide

Yanıtınız için teşekkürler. Ancak veritabanı örneğindeki kullanıcı rolünü değiştirmek istemiyorum. Örnek üzerinde herhangi bir değişiklik yapmamak için herhangi bir çözüm var mı?
Joey Yi Zhao

MongoDB tarafından bu şekilde tasarlanmıştır.
SqlWorldWide

Bu, mongo uri ile bunu başaramayacağım anlamına mı geliyor?
Joey Yi Zhao
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.