2015-04-26 7 views
12

This issue इंजन से साइकिल के नवीनतम संस्करण को हल किया जा करने के लिए कहा गया था, लेकिन अभी भी मेरे लिए होता है। मैं Mongoid के साथ एक रेल 4.2 अनुप्रयोग है, ReadWrite और dbOwner भूमिकाओं के साथ एक MongoDB DB के लिए एक उपयोगकर्ता बनाया है, और mong.conf फ़ाइल में प्रमाणन = सच निर्धारित किया है।
मैं मोंगो खोल या एक साधारण जावा अनुप्रयोग उनके मोंगो ड्राइवर का उपयोग कर का उपयोग करते हुए कि उपयोगकर्ता पहचान के साथ डीबी पर किसी भी कार्रवाई कर सकते हैं।
हालांकि, जब Mongoid साथ प्रमाणित करने का प्रयास मैं हमेशा यह त्रुटि प्राप्त :रेल Mongoid प्रमाणित करने के लिए विफल रहता है - त्रुटि 13 के साथ विफल हुआ: "my_db.my_collection पर क्वेरी के लिए अधिकृत नहीं"

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 

मैं भी जगह की कोशिश की है:

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

यहाँ मेरी mongoid.yml फ़ाइल के संबंधित भाग है होस्ट के सर्वर के रिमोट एड्रेस के साथ होस्ट और इसे सफलतापूर्वक एक्सेस करें (जो प्रमाणीकरण विकल्प अक्षम के साथ काम करता है) सफलता के बिना। क्या इसके लायक है के लिए, मैं देख सकता हूँ mpped/node.rb फ़ाइल डीबगिंग, में से साख ensure_connected कि विधि मुझे लगता है कि @credentials चर मेरी यूज़रनेम और पासवर्ड मैं यहाँ क्या याद आ रही है शामिल हैं? धन्यवाद!

+0

http://stackoverflow.com/questions/17376250/ruby-on-rails-mongoid-and-webfaction-not-authorized-for- प्रश्न-त्रुटि 16550 –

+0

धन्यवाद, लेकिन जैसा कि मैंने कहा कि मैं भी ReadWrite भूमिका के लिए इस्तेमाल किया है और यह अन्य ग्राहकों से काम करता है। यह सही जवाब नहीं है – Orr

+0

यदि आप उपयोगकर्ता को [dbOwner] टाइप करने के लिए आगे बढ़ते हैं (http://docs.mongodb.org/manual/reference/built-in-roles/#dbOwner) क्या त्रुटि अभी भी होती है? – Drakes

उत्तर

10

भी इस समस्या में पड़ गए। मैं अनुमान लगाने के इच्छुक हूं कि आप मोंगोडीबी 3+ चला रहे हैं?

बुरी खबर: मोपेड 2 (जो आज मोंगोइड द्वारा उपयोग किया जाता है) मोंगोडीबी 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

अच्छी खबर: एक प्रमुख पुनर्लेखन अभी चल रहा है (Mongoid 5) है, जो MongoDB टीम द्वारा समर्थन किया जाएगा। आप आज गुरु से खींच सकते हैं और इसे बाहर का परीक्षण ... लेकिन मैं उत्पादन के लिए अभी तक की सिफारिश नहीं होगा के रूप में यह अत्यधिक अस्थिर है।

समाधान विकल्प MongoDB से

  1. करके उपयोगकर्ता को निकालें/पास प्रमाणन और डेटाबेस के लिए भी सार्वजनिक डीएनएस। एक निजी कुंजी के साथ एसएसएच का प्रयोग करें और निजी पते से कनेक्ट करें।
  2. MongoDB 2.x में डाउनग्रेड
  3. उपयोग Mongoid 5
+1

इसके लिए धन्यवाद, मैं mongoid 5 में अपग्रेड किया गया, क्योंकि अब यह उपलब्ध है, अभी भी मोन्दो के बजाए मोंगो के साथ एक ही त्रुटि है! –

+0

mongoid 5.0 अब प्रमाणीकरण का समर्थन करता है: https://docs.mongodb.org/ecosystem/tutorial/ruby-mongoid-tutorial/ – Orr

संबंधित मुद्दे