2015-04-26 12 views
12

This issue si dice che sia stata risolta l'ultima versione di Ciclomotore ma mi succede ancora. Ho un rotaie 4.2 app con Mongoid, creato un utente per un MongoDB DB con READWRITE e dbowner ruoli, e impostare auth = true nel file di mong.conf.
È possibile eseguire qualsiasi azione sul DB con le credenziali dell'utente utilizzando la shell Mongo o una semplice applicazione Java utilizzando il proprio driver Mongo.
Tuttavia, quando si cerca di autenticarsi con Mongoid ho sempre ottengo questo errore:
Rails Mongoid non riesce ad autenticarsi - fallito con l'errore 13: "non autorizzato per la query su my_db.my_collection"

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

Ecco la quota di competenza del mio file 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 

Ho anche provato a sostituire l'host con indirizzo remoto del server e accedervi da remoto (che funziona con l'opzione di autenticazione disabilitata) senza successo. Per quanto vale, posso vedere che le credenziali di debug il file mpped/node.rb, nel ensure_connected metodo vedo che @credentials variabile contiene il nome utente e la password Che cosa mi manca qui? Grazie!

+0

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

+0

Grazie ma come ho detto ho anche utilizzato il ruolo readWrite e funziona con altri client. Questa non è la risposta giusta – Orr

+0

Se si esegue l'escalation dell'utente per digitare [dbOwner] (http://docs.mongodb.org/manual/reference/built-in-roles/#dbOwner), si verifica ancora l'errore? – Drakes

risposta

10

Anche in questo problema. Sarei disposto a indovinare che stai eseguendo MongoDB 3+?

La cattiva notizia: Il ciclomotore 2 (utilizzato da mongoid oggi) non supporta l'autenticazione per 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

La buona notizia: Un importante riscrittura è in corso in questo momento (Mongoid 5), che sarà supportato dal team di MongoDB. Puoi estrarre dal master oggi e provarlo ... ma non lo consiglierei per la produzione perché è altamente instabile.

opzioni di soluzione

  1. Rimuovi utente/auth passaggio da MongoDB e qualsiasi DNS pubblico al database. Usa SSH con una chiave privata e connettiti all'indirizzo privato.
  2. Downgrade a MongoDB 2.x
  3. Usa Mongoid 5
+1

Grazie per questo, ho aggiornato a mongoid 5, dato che ora è disponibile, ancora lo stesso errore con mongo, invece di ciclomotore! –

+0

mongoid 5.0 ora supporta l'autenticazione: https://docs.mongodb.org/ecosystem/tutorial/ruby-mongoid-tutorial/ – Orr

Problemi correlati