سؤال يصادق المشرف السوبر MongoDB بخير ولكن لا يزال يحصل على أخطاء الاستعلام غير المصرح به؟


لقد بدأت استخدام MongoDB مع المصادقة. وفقًا للوثائق ، استخدمت استثناء المضيف المحلي لإنشاء مستخدم مسؤول باستخدام دور واحد userAdminAnyDatabase. أن كل شيء سار على ما يرام. عندما أقوم بتشغيل العميل "مونغو" والتفويض ضد مشرف قاعدة البيانات بعد استخدام قاعدة البيانات هذه أحصل على الرقم 1 مشيرا إلى أن الإذن نجح. ومع ذلك ، أي أمر أحاول تنفيذ النتائج في خطأ "غير مصرح به" ، حتى في محاولة لإظهار مجموعات في قاعدة بيانات المشرف أذن فقط ضد.

يمكن لأي شخص أن يقول لي لماذا هذا وكيف يمكنني إصلاحه؟ أنا حاليا قيد التشغيل دون مصادقة حتى أتمكن من الحصول على هذا الثابتة.


4
2017-08-25 01:01


الأصل




الأجوبة:


ال userAdminAnyDatabase دور (و userAdmin دور أنه امتداد) ببساطة يعطي المستخدم الإذن للقراءة والكتابة إلى system.users جمع لإدارة مستخدمي قاعدة البيانات. لا يسمح للمستخدم بالقراءة أو الكتابة إلى المجموعات الفعلية لقاعدة البيانات. لذلك ، تحتاج إلى منح read أو readWrite الأدوار.

نرى أدوار امتياز المستخدم في MongoDB و إضافة مستخدم إلى قاعدة البيانات.


4
2017-09-03 09:21





حاول تشغيل الخطوات التالية لحل مشكلة المصادقة:

  1. بدء تشغيل mongod دون مصادقة وتشغيله:
  2. إنشاء قاعدة بيانات
  3. خلق مستخدم مع الدور
  4. إنشاء مجموعة وهمية مع وثيقة واحدة
  5. توقف / قتل mongod
  6. بدء تشغيل mongod مع تمكين المصادقة
  7. التبديل إلى قاعدة البيانات التي تم إنشاؤها في الخطوة 1
  8. المصادقة على قاعدة البيانات مع المستخدم الذي تم إنشاؤه في الخطوة 3

أوامر عينة:

  1. mongod --port 27017 --dbpath /data/db1
  2. use educationDb;
  3. db.createUser({ user : 'readonly', pwd: 'readonly', roles : ['read']})
  4. db.xyz.insert({"name":"nix.education"})
  5. توقف / قتل mongod
  6. mongod --auth --port 27017 --dbpath /data/db1
  7. use educationDb;
  8. db.auth('readonly','readonly')

0
2017-07-07 08:25