2015-04-26 10 views
12

This issue'un Moped'in en son sürümünde çözüleceği söylendi, ancak yine de başıma geldi. Ben Mongoid ile raylar 4.2 uygulaması var readwrite ve dbOwner rolleri ile MongoDB DB için bir kullanıcı oluşturduk ve mong.conf dosyada yetkilendirme = true ayarlayın.
DB'deki herhangi bir eylemi Mongo kabuğunu kullanan kullanıcı kimlik bilgileriyle veya Mongo sürücüsünü kullanarak basit bir Java uygulamasıyla gerçekleştirebilirim.
Ancak Mongoid ile kimlik doğrulaması çalışırken hep bu hatayı alabilirsiniz :Raylar Mongoid kimlik doğrulaması başarısız - 13: "my_db.my_collection ile ilgili sorgu için yetkilendirilmemiş"

production: 
    # Configure available database sessions. (required) 
    sessions: 
    # Defines the default session. (required) 
    default: 
     # Defines the name of the default database that Mongoid can connect to. 
     # (required). 
     database: my_db 
     hosts: 
       - localhost:27017 
     username: my_username 
     password: my_password 

Ben de değiştirilmesi denedim: Burada

failed with error 13: "not authorized for query on my_db.my_collection"

benim mongoid.yml dosyasının ilgili kısmıdır sunucunun uzak adresi ile ana bilgisayar ve uzaktan erişim (kimlik doğrulama seçeneğiyle birlikte çalışır) başarılı olmaz. değer bunu ne için , ben yılında, mpped/node.rb dosyayı ayıklama yoluyla kimlik bilgileri ben @credentials değişken adımı ve ben burada ne eksik şifresini içerdiğini görmek için yöntemi ensure_connected görebiliriz? Teşekkürler!

+0

http://stackoverflow.com/questions/17376250/ruby-on-rails-mongoid-and-webfaction-not-authorized-for- query-error-16550 –

+0

Teşekkürler ama ben de readWrite rolünü kullandım ve diğer istemcilerden çalıştığımı söylediğim gibi. Doğru cevap bu değil – Orr

+0

Kullanıcıyı [dbOwner] (http://docs.mongodb.org/manual/reference/built-in-roles/#dbOwner) yazacak şekilde iletiyorsanız, hata hala devam ediyor mu? – Drakes

cevap

10

Ayrıca bu soruna da girdik. MongoDB 3+ koştuğunu tahmin etmek isterim?

Kötü haber: Moped 2 (bugün mongoid tarafından kullanılıyor) MongoDB 3+ için kimlik doğrulamasını desteklemiyor.

Moped also falls short on a lot of essential functionality for supporting server version 3.0. For example, it simply doesn’t support authentication with MongoDB 3.0 or recent versions of the wire protocol (which includes commands such as listCollections, listIndexes, and the ability to do bulk writes). Integrating Mongoid with Ruby driver 2.0 will bring a lot of this functionality and forward-compatibility to the ODM. Source

İyi haber: önemli yeniden yazma şu anda MongoDB ekibi tarafından desteklenecektir (Mongoid 5), sürüyor. Bugün ustadan çekebilir ve test edebilirsiniz ... ama son derece dengesiz olduğu için üretim için tavsiye etmem.

Çözüm seçenekleri

  1. Kullanıcıyı kaldır/geçiş auth MongoDB gelen ve Veritabanına herhangi bir kamu DNS. SSH'yi özel bir anahtarla kullanın ve özel adrese bağlanın. MongoDB 2.x için
  2. Düşürme
  3. Kullanım Mongoid 5
+1

Bunun için mongoid 5'e yükseltildim, şu an kullanılabilir, mongo yerine hala mongo ile aynı hata! –

+0

mongoid 5.0 şimdi kimlik doğrulamayı destekliyor: https://docs.mongodb.org/ecosystem/tutorial/ruby-mongoid-tutorial/ – Orr

İlgili konular