2015-04-26 17 views
12

This issue zostało uznane za rozwiązane w najnowszej wersji Motoroweru, ale nadal mi się przytrafia. Mam szyn 4.2 app z Mongoid, stworzył użytkownika o MongoDB DB z ReadWrite i dbOwner ról i ustaw auth = true w mong.conf pliku.
Mogę wykonać dowolne działania na DB z tymi poświadczeniami użytkownika za pomocą powłoki Mongo lub prostej aplikacji Java za pomocą ich sterownika Mongo.
Jednak gdy próbuje uwierzytelnić Mongoid zawsze dostać ten błąd:Railsy Mongoid nie mogą się uwierzytelnić - nie powiodło się z powodu błędu 13: "nie zatwierdzono dla zapytania w my_db.my_collection"

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

Oto odnośny fragment mojego pliku mongoid.yml:

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 

Próbowałem zostały również zastąpienie host ze zdalnym adresem serwera i dostęp do niego zdalnie (który działa z wyłączoną opcją uwierzytelniania) bez powodzenia. Na co to wszystko warte, widzę, że poświadczenia przez debugowanie mpped plik/node.rb w ensure_connected metodę widzę, że @credentials zmienna zawiera nazwę użytkownika i hasło Co ja tu brakuje? Dzięki!

+0

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

+0

Dzięki, ale jak już powiedziałem, użyłem również roli readWrite i działa ona od innych klientów. To nie jest właściwa odpowiedź. – Orr

+0

Jeśli eskalujesz użytkownika, aby wpisać [dbOwner] (http://docs.mongodb.org/manual/reference/built-in-roles/#dbOwner), czy błąd nadal występuje? – Drakes

Odpowiedz

10

Wystąpił również ten problem. Byłbym skłonny zgadnąć, że używasz MongoDB 3+?

Złe wieści: Moped 2 (używany przez dzisiejszych mongoidów) nie obsługuje uwierzytelniania dla MongoDB 3+.

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

Dobrą wiadomością: Głównym przepisać trwa teraz (Mongoid 5), który będzie wspierany przez zespół MongoDB. Możesz pobrać od mistrza już dziś i przetestować go ... ale nie polecałbym go do produkcji, ponieważ jest bardzo niestabilny.

opcje Rozwiązanie

  1. Usuń użytkownika/karnet auth z MongoDB i każdy publiczny DNS do bazy danych. Użyj SSH z kluczem prywatnym i połącz się z prywatnym adresem.
  2. zmiany na MongoDB 2.x
  3. Zastosowanie Mongoid 5
+1

Dzięki za to uaktualniłem do mongoid 5, ponieważ teraz jest dostępny, wciąż ten sam błąd z mongo, zamiast motoroweru! –

+0

Mongoid 5.0 obsługuje teraz uwierzytelnianie: https://docs.mongodb.org/ecosystem/tutorial/ruby-mongoid-tutorial/ – Orr

Powiązane problemy