authentication - كيفية تأمين MongoDB مع اسم المستخدم وكلمة المرور




(10)

أرغب في إعداد مصادقة اسم المستخدم وكلمة المرور لمثيل MongoDB الخاص بي ، بحيث يطلب أي وصول عن بعد اسم المستخدم وكلمة المرور. لقد جربت البرنامج التعليمي من موقع MongoDB وتابعت ما يلي:

use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');

بعد ذلك ، خرجت وركضت منجو ثانية. ولست بحاجة إلى كلمة مرور للوصول إليه. حتى لو اتصلت بقاعدة البيانات عن بعد ، لا تتم مطالبتي بإدخال اسم المستخدم وكلمة المرور.

UPDATE هنا هو الحل انتهيت به باستخدام

1) At the mongo command line, set the administrator:

    use admin;
    db.addUser('admin','123456');

2) Shutdown the server and exit

    db.shutdownServer();
    exit

3) Restart mongod with --auth

  $ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/

4) Run mongo again in 2 ways:

   i) run mongo first then login:

        $ ./mongodb/bin/mongo localhost:27017
        use admin
        db.auth('admin','123456');

  ii) run & login to mongo in command line.

        $ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456

اسم المستخدم وكلمة المرور ستعمل بنفس الطريقة من أجل mongodump و mongoexport .


Answers

بعد إنشاء مستخدم جديد ، يُرجى عدم السماح grant المستخدم إذنًا read/write/root . يمكنك أن تجرب

cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])


use dbName
db.createUser(
   {
     user: "dbUser",
     pwd: "dbPassword",
     roles: [ "readWrite", "dbAdmin" ]
   }
)

إليك شفرة جافا سكريبت لإضافة مستخدمين.

  1. بدء mongod مع --auth = true

  2. الوصول إلى قاعدة بيانات المشرف من shell mongo وتمرير ملف javascript.

    المشرف على mongo "Filename.js"

    "Filename.js"

    // Adding admin user
    db.addUser("admin_username", " admin_password");
    // Authenticate admin user
    db.auth("admin_username ", " admin_password ");
    // use  database code from java script
    db = db.getSiblingDB("newDatabase");
    // Adding newDatabase database user  
    db.addUser("database_username ", " database_ password ");
    
  3. الآن اكتمال إضافة المستخدم ، يمكننا التحقق من الوصول إلى قاعدة البيانات من قذيفة منغو


أنت في حاجة لبدء mongod مع - خيار --auth بعد إعداد المستخدم.

من موقع MongoDB:

قم بتشغيل قاعدة البيانات (عملية mongod) باستخدام خيار --auth لتمكين الأمان. يجب عليك إما إضافة مستخدم إلى db admin قبل بدء تشغيل الخادم مع - --auth أو إضافة المستخدم الأول من واجهة localhost.

مصادقة MongoDB


هذه الخطوات عملت علي:

  1. اكتب mongod --port 27017 على كمد
  2. ثم الاتصال بقذيفة منغونغ: mongo --port 27017
  3. إنشاء مسؤول المستخدم: استخدم admin db.createUser ({user: "myUserAdmin"، pwd: "abc123"، الأدوار: [{role: "userAdminAnyDatabase"، db: "admin"}]})
  4. قطع قذيفة منغو
  5. إعادة تشغيل mongodb: mongod --auth --port 27017
  6. start mongo shell: mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
  7. لمصادقة بعد الاتصال ، قم بتوصيل قذيفة mongo إلى mongod: mongo --port 27017
  8. التبديل إلى قاعدة بيانات المصادقة: استخدم admin db.auth ("myUserAdmin"، "abc123"


أولاً ، قم بإلغاء التعليق على السطر الذي يبدأ بـ #auth=true في ملف تكوين mongod (المسار الافتراضي /etc/mongo.conf ). هذا سوف تمكن المصادقة من mongodb.

ثم ، إعادة تشغيل mongodb: إعادة تشغيل sudo service mongod restart


هذه الإجابة تخص Mongo 3.2.1 Reference

المبنى رقم 1:

$ mongod --auth

مخرج 2:

db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})

إذا كنت ترغب في إضافة بدون أدوار (اختياري):

db.createUser({user:"admin_name", pwd:"1234", roles:[]})

للتحقق مما إذا كانت مصادقة أم لا:

db.auth("admin_name", "1234")

يجب أن تعطيك:

1

آخر:

Error: Authentication failed.
0

ستحتاج إلى التبديل إلى قاعدة البيانات التي ترغب في تشغيل المستخدم (وليس db المشرف) ...

use mydatabase

انظر هذا المنصب لمزيد من المساعدة ... http://learnmongo.com/posts/quick-tip-mongodb-users/


على الرغم من وجود العديد من الطرق ، فإن أفضل طريقة (الأكثر كفاءة وأسهل) هي استخدام db.dropDatabase()





authentication mongodb