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




(8)

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

من موقع MongoDB:

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

مصادقة MongoDB

أرغب في إعداد مصادقة اسم المستخدم وكلمة المرور لمثيل 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 .


أول تشغيل mongoDB على محطة باستخدام

mongod

الآن تشغيل mongo shell استخدام الأوامر التالية

    use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

أعد تشغيل مثيل MongoDB مع التحكم بالوصول.

mongod --auth

الآن تصديق نفسك من سطر الأوامر باستخدام

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

قرأته من

https://docs.mongodb.com/manual/tutorial/enable-authentication/


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

  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. الآن اكتمال إضافة المستخدم ، يمكننا التحقق من الوصول إلى قاعدة البيانات من قذيفة منغو


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

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


هذه الإجابة تخص 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

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

  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"

Wow الكثير من الإجابات المعقدة / المربكة هنا.

هذا هو اعتبارا من V3.4 .

اجابة قصيرة.

1) بدء MongoDB دون التحكم بالوصول.

mongod --dbpath /data/db

2) الاتصال بالمثيل.

mongo

3) إنشاء المستخدم.

use some_db
db.createUser(
  {
    user: "myNormalUser",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "some_db" },
             { role: "read", db: "some_other_db" } ]
  }
)

4) قم بإيقاف المثيل MongoDB وابدأ مرة أخرى مع التحكم بالوصول.

mongod --auth --dbpath /data/db

5) الاتصال والمصادقة كمستخدم.

use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})

إجابة طويلة: اقرأ هذا إذا كنت تريد أن تفهم بشكل صحيح.

انها حقا بسيطة. سوف تخبئ ما يلي https://docs.mongodb.com/manual/tutorial/enable-authentication/

إذا كنت تريد معرفة المزيد حول الدور الذي تقوم به الأدوار بالفعل هنا: https://docs.mongodb.com/manual/reference/built-in-roles/

1) بدء MongoDB دون التحكم بالوصول.

mongod --dbpath /data/db

2) الاتصال بالمثيل.

mongo

3) إنشاء مسؤول المستخدم. يقوم ما يلي بإنشاء مسؤول مستخدم في قاعدة بيانات مصادقة admin . المستخدم هو dbOwner عبر قاعدة البيانات some_db وليس عبر قاعدة بيانات admin ، من المهم تذكر ذلك.

use admin
db.createUser(
  {
    user: "myDbOwner",
    pwd: "abc123",
    roles: [ { role: "dbOwner", db: "some_db" } ]
  }
)

أو إذا كنت تريد إنشاء مسؤول يكون مسؤولاً على أي قاعدة بيانات:

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

4) قم بإيقاف المثيل MongoDB وابدأ مرة أخرى مع التحكم بالوصول.

mongod --auth --dbpath /data/db

5) الاتصال والمصادقة كمسؤول المستخدم تجاه قاعدة بيانات مصادقة admin ، وليس نحو قاعدة بيانات المصادقة some_db . تم إنشاء مسؤول المستخدم في قاعدة بيانات مصادقة admin ، ولم يكن المستخدم موجودًا في قاعدة بيانات المصادقة some_db .

use admin
db.auth("myDbOwner", "abc123")

يتم الآن مصادقتك كـ dbOwner عبر قاعدة البيانات some_db . حتى الآن إذا كنت ترغب في القراءة / الكتابة / القيام بالأشياء مباشرة نحو قاعدة البيانات some_db يمكنك تغيير ذلك.

use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.

المزيد من الوظائف: https://docs.mongodb.com/manual/reference/built-in-roles/

إذا كنت ترغب في إنشاء مستخدمين إضافيين ليسوا مسؤولين عن المستخدمين والذين هم مجرد مستخدمين عاديين يواصلون القراءة أدناه.

6) إنشاء مستخدم عادي. سيتم إنشاء هذا المستخدم في قاعدة بيانات المصادقة some_db الأسفل.

use some_db
db.createUser(
  {
    user: "myNormalUser",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "some_db" },
             { role: "read", db: "some_other_db" } ]
  }
)

7) الخروج من قذيفة mongo ، إعادة الاتصال ، المصادقة كمستخدم.

use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})

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




mongodb