কীভাবে ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়ে মঙ্গোডিবি সুরক্ষিত করবেন


376

আমি আমার মঙ্গোবিবি উদাহরণ হিসাবে ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রমাণীকরণ সেট আপ করতে চাই, যাতে যে কোনও দূরবর্তী অ্যাক্সেস ব্যবহারকারীর নাম এবং পাসওয়ার্ড জানতে চাইতে পারে। আমি মঙ্গোডিবি সাইট থেকে টিউটোরিয়াল চেষ্টা করেছি এবং নিম্নলিখিতটি করেছি:

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

তারপরে, আমি বাইরে বেরিয়ে আবার মঙ্গো চালাতাম। এবং এটি অ্যাক্সেস করার জন্য আমার পাসওয়ার্ডের দরকার নেই। এমনকি যদি আমি ডেটাবেসে দূরবর্তীভাবে সংযোগ করি, তবুও আমাকে ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য অনুরোধ জানানো হবে না।


আপডেট আপডেটটি এখানে ব্যবহার করে আমি শেষ করেছি

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


4
এটি মোংডিবি সংস্করণ 2.2.x
টম

22
মঙ্গো 3.0.০.৪ এ ব্যবহারকারী তৈরির কমান্ডটি db.createUser ()
chronologos



1
কেবল পরিষ্কার করে বলতে গেলে, এটি তারের উপর দিয়ে যাওয়া বাইটগুলি এনক্রিপ্ট করে না। এটি কেবল অ্যাক্সেস নিয়ন্ত্রণের জন্য।
ড্যানিয়েল এফ

উত্তর:


117

আপনি শুরু করতে mongodসঙ্গে --authব্যবহারকারী স্থাপনের পর বিকল্প।

মঙ্গোডিবি সাইট থেকে:

--authসুরক্ষা সক্ষম করার অপশনটি দিয়ে ডেটাবেস (মংডোড প্রক্রিয়া) চালান । আপনার অবশ্যই সার্ভারটি শুরু করার আগে কোনও ব্যবহারকারীকে অ্যাডমিন ডিবিতে যুক্ত করা উচিত --auth, বা লোকালহোস্ট ইন্টারফেস থেকে প্রথম ব্যবহারকারী যুক্ত করা উচিত।

মঙ্গোডিবি প্রমাণীকরণ


1
আমি এটি চেষ্টা করেছি এবং উদাহরণটি অনুসরণ করেছি। এখন .. আমি সার্ভারটি --auth দিয়ে পুনরায় চালু করার পরে এটি সেট করতে পারি। যাইহোক, আমি যখন লগইন করার চেষ্টা করি (./mongo -u theadmin -p 12345) আমি ব্যর্থ হই। আমি লগইন করতে পারি না
মুরভিনলাই

যদি এর পরেও আপনি সংযুক্ত করতে পারবেন না, তবে আপনি adminডিবিতে সংযোগ দেওয়ার চেষ্টা করছেন বলে অন্য ডিবি ব্যবহার করুন এবং আবার চেষ্টা করুন। কেবলমাত্র একটি ব্যবহারকারী অ্যাডমিন (যেকোনও ডেটাবেস) সংযোগ করতে পারে admin
ভাদোরকোয়েস্ট

80

বাহ এত জটিল / বিভ্রান্তিকর উত্তর এখানে।

এটি v3.4 হিসাবে ।

সংক্ষিপ্ত উত্তর.

1) অ্যাক্সেস নিয়ন্ত্রণ ছাড়াই মঙ্গোডিবি শুরু করুন।

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) মঙ্গোডিবি উদাহরণ বন্ধ করুন এবং অ্যাক্সেস নিয়ন্ত্রণ দিয়ে আবার এটি শুরু করুন।

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/references/built-in-roles/

1) অ্যাক্সেস নিয়ন্ত্রণ ছাড়াই মঙ্গোডিবি শুরু করুন।

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) মঙ্গোডিবি উদাহরণ বন্ধ করুন এবং অ্যাক্সেস নিয়ন্ত্রণ দিয়ে আবার এটি শুরু করুন।

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/references/built-in-roles/

আপনি যদি অতিরিক্ত ব্যবহারকারী তৈরি করতে চান যা ব্যবহারকারী প্রশাসক নয় এবং যা কেবল সাধারণ ব্যবহারকারীরা নীচে পড়তে পারেন continue

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) মঙ্গো শেলটি থেকে প্রস্থান করুন, পুনরায় সংযোগ করুন, ব্যবহারকারী হিসাবে প্রমাণীকরণ করুন।

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

2
অবশেষে আমি একটি ধারণা পেয়েছিলাম আসলে কী ঘটছে।
mestarted


3
আমি নিজেকে স্বীকৃত উত্তরগুলি এসওতে রিফ্রেশ পেতে পারে বলে মনে করি। এই জুলাই 2017. হিসাবে সর্বাধিক প্রাসঙ্গিক সমাধান
azatar

1
আপনার উত্তর আপডেট করুন! আমি জানি না আপনি কোথা থেকে ইউজার অ্যাডমিনএইন ডেটাবেস পেয়েছেন তবে এটি কার্যকর হয় না। ভূমিকা সমস্ত ডিবিএসের মধ্যে প্রশাসকের অ্যাক্সেসের জন্য মূল
আকাশ ভার্মা

@ আকাশবর্মা ডকস.মোংডব.কম / ম্যানুয়াল / রেফারেন্স / বিল্ট- ইন- রোলস্ ; (টিবিএইচ কখনই রুট লোল ব্যবহার করবেন না)
কে - এসও-তে বিষক্রিয়া বাড়ছে।

63

প্রথমে #auth=trueআপনার মোংড কনফিগারেশন ফাইল (ডিফল্ট পাথ /etc/mongo.conf) দিয়ে শুরু হওয়া লাইনটি আন-মন্তব্য করুন । এটি মঙ্গদ্ব্বের জন্য প্রমাণীকরণ সক্ষম করবে।

তারপরে, মংগডব পুনরায় চালু করুন: sudo service mongod restart


10
ডিফল্ট পাথটি /etc/mongod.confনয়/etc/mongo.conf
মিথিল

2
বা, প্রথমত অসুবিধা, তারপরে পুনঃসূচনা করুন :)))
জিওম্যাক

2
আপডেট: এখন এর সাথে পরিষেবাটি পুনঃসূচনা করুন: সুডো পরিষেবা মঙ্গডব পুনঃসূচনা
শরাফজাফরি

কনফিগার ফাইলের অবস্থান এবং নামটি হ'ল: /etc/mongodb.conf
এইচজিমামাকি

46

এই উত্তরটি মঙ্গোর ৩.২.১ রেফারেন্সের জন্য

বন্দর 1:

$ mongod --auth

টার্মিনাল ২:

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

আপনি যদি ভূমিকা ছাড়া যুক্ত করতে চান (alচ্ছিক):

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

প্রমাণীকরণ হয়েছে কিনা তা যাচাই করতে:

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

এটি আপনাকে দেওয়া উচিত:

1

অন্য:

Error: Authentication failed.
0

2
২.৪ এর মতো পুরানো সংস্করণগুলি db.addUser ব্যবহার করবে
arviman

আমাকে use adminআগে টাইপ করতে createUserহবে অন্যথায় এটি একটি ত্রুটি দিয়েছে।
গিলিয়াম এফ।

28

ব্যবহারকারীদের যুক্ত করার জন্য এখানে জাভাস্ক্রিপ্ট কোড রয়েছে।

  1. শুরু mongodসঙ্গে--auth = true

  2. মঙ্গো শেল থেকে অ্যাডমিন ডাটাবেস অ্যাক্সেস করুন এবং জাভাস্ক্রিপ্ট ফাইলটি পাস করুন।

    মঙ্গো প্রশাসক "ফাইলের নাম.জেএস"

    "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. এখন ব্যবহারকারীর সংযোজন সম্পূর্ণ, আমরা মঙ্গো শেল থেকে ডাটাবেস অ্যাক্সেস যাচাই করতে পারি


1
কোনও ফাইলের মধ্যে ব্যবহারকারীর নাম এবং পাসওয়ার্ড সেট করা খুব নিরাপদ দেখাচ্ছে না।
অন্বেষণ করা

জাভাস্ক্রিপ্ট। "জাভা স্ক্রিপ্ট" নয়।
ক্যামিলো মার্টিন

এখানে জাভাস্ক্রিপ্ট ফাইলের উদ্দেশ্য কী?
রবি

@ ক্যামিলোমার্টিন জাভাস্ক্রিপ্ট, "জাভাস্ক্রিপ্ট" নয়।
ম্যাডব্রেকস

14

https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization

মঙ্গো সেটিংস ফাইলটি সম্পাদনা করুন;

sudo nano /etc/mongod.conf

লাইন যুক্ত করুন:

security.authorization : enabled

পরিষেবাটি পুনরায় চালু করুন

sudo service mongod restart

শুভেচ্ছা সহ


2
সবাই কেন এটি উল্লেখ করে না তা আমি বুঝতে পারি না। এটি এত গুরুত্বপূর্ণ
জন

10

টার্মিনাল ব্যবহার করে প্রথমে মঙ্গোডিবি চালান

mongod

মঙ্গো শেল নিম্নলিখিত কমান্ড ব্যবহার করুন

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

অ্যাক্সেস নিয়ন্ত্রণের সাথে মংগাডিবি পুনরায় শুরু করুন।

mongod --auth

এখন কমান্ড লাইন ব্যবহার করে নিজেকে প্রমাণীকরণ করুন

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

আমি এটি থেকে পড়েছি

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


1
আমি কোনও ব্যবহারকারীকে মূল সহ সংজ্ঞায়িত করেছি, তারপরে আমি আপনাকে খুঁজে না পাওয়া পর্যন্ত আরও বেশি করে যুক্ত করি, MongoDB Enterprise > db.system.users.find() { "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SC RAM-SHA-1" : { "iterationCount" : 10000, "salt" : "k96PCEflidMY5seVju+gAw==", "s toredKey" : "CabQTnJtny7cv0wT5X8oX9QOn3A=", "serverKey" : "RJyCdnlIhyIfj2+d44L61 bYK+MU=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "dbAdmin", "db" : "admin" }, { "role" : "userAdmin", "db" : "admin" }, { "role" : "root", "db" : "admin" } ] }এখনও প্রমাণীকরণ ব্যর্থ হয়
মৃত মান্ন

এমনকি আমি db.changeUserPassword (), বা এটি যে কোনও জিনিস ব্যবহার করেছি, তারপরেও যখন আমি db.auth ('অ্যাডমিন', 'আমার পাস') বা আপনি যেভাবে এটি করেছিলেন, এটি ব্যবহারকারীর প্রশাসকের পক্ষে প্রমাণীকরণ ব্যর্থ হয়েছে
মৃতম্যানএন

ব্যবহারের rootভূমিকা অপারেশন এবং সংযুক্ত নিম্নলিখিত ভূমিকা সমস্ত সম্পদ অ্যাক্সেস প্রদান করে না ... ভূমিকা রুট
Laode মুহাম্মদ আল Fatih

8

এটি আমি উবুন্টু 18.04 এ করেছি:

$ sudo apt install mongodb
$ mongo
> show dbs
> use admin
> db.createUser({  user: "root",  pwd: "rootpw",  roles: [ "root" ]  })  // root user can do anything
> use lefa
> db.lefa.save( {name:"test"} )
> db.lefa.find()
> show dbs
> db.createUser({  user: "lefa",  pwd: "lefapw",  roles: [ { role: "dbOwner", db: "lefa" } ]  }) // admin of a db
> exit
$ sudo vim /etc/mongodb.conf
auth = true
$ sudo systemctl restart mongodb
$ mongo -u "root" -p "rootpw" --authenticationDatabase  "admin"
> use admin
> exit
$ mongo -u "lefa" -p "lefapw" --authenticationDatabase  "lefa"
> use lefa
> exit

8

আপনি পরিবর্তন করতে পারে /etc/mongod.conf

আগে

#security:

পরে

security:
    authorization: "enabled"

তারপর sudo service mongod restart


5

ক্রমে নীচের পদক্ষেপগুলি অনুসরণ করুন

  • সিএলআই ব্যবহার করে একটি ব্যবহারকারী তৈরি করুন
use admin
db.createUser(
  {
    user: "admin",
    pwd: "admin123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)
  • প্রমাণীকরণ সক্ষম করুন, এটি আপনার ওএসের উপর ভিত্তি করে কীভাবে পৃথক করবেন, আপনি যদি উইন্ডোজ ব্যবহার করছেন তবে আপনি যদি mongod --authলিনাক্সের ক্ষেত্রে কেবল /etc/mongod.confফাইলটি সম্পাদনা করতে পারেন security.authorization : enabledএবং মংড পরিষেবাটি পুনরায় চালু করতে পারেন
  • ক্লাইমের মাধ্যমে সংযোগ করতে mongo -u "admin" -p "admin123" --authenticationDatabase "admin"। এটাই

আপনি এই পোস্টে চেক আউট করতে পারেন আরও বিশদে যাওয়ার জন্য এবং মঙ্গুজ ব্যবহার করে এটিতে সংযোগ স্থাপন শিখতে দেখতে পারেন।


4

ডাটাবেস অ্যাক্সেস সুরক্ষিত করতে একটি নির্দিষ্ট ডাটাবেসের জন্য পাসওয়ার্ড সহ ব্যবহারকারী তৈরি:

use dbName

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

4

আপনার যে ডাটাবেসে আপনি ব্যবহারকারী চান সেটি (অ্যাডমিন ডিবি নয়) এ স্যুইচ করতে হবে ...

use mydatabase

আরও সহায়তার জন্য এই পোস্টটি দেখুন ... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/


দরকার নেই কারণ ডিবি = db.getSiblingDB ("নতুন ডেটাবেস") সেট করা হচ্ছে;
ওজান বায়আরাম

3

এই পদক্ষেপগুলি আমার উপর কাজ করেছে:

  1. মংগড লিখুন - 27017 সেন্টিমিটারে পোর্ট করুন
  2. তারপরে মঙ্গো শেলের সাথে সংযুক্ত করুন: মঙ্গো --পোর্ট 27017
  3. ব্যবহারকারী অ্যাডমিন তৈরি করুন: অ্যাডমিন db.createUser ব্যবহার করুন ({ব্যবহারকারী: "myUserAdmin", pwd: "abc123", ভূমিকা: [{ভূমিকা: "userAdminAnyDatedia", db: "প্রশাসক"}]})
  4. মঙ্গো শেল সংযোগ বিচ্ছিন্ন
  5. মঙ্গডব পুনরায় চালু করুন: মঙ্গোদ --auth --port 27017
  6. মঙ্গো শেল শুরু করুন: মঙ্গো --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "অ্যাডমিন"
  7. সংযোগের পরে প্রমাণীকরণ করতে, মঙ্গো শেলটি মঙ্গোদ: মঙ্গো --পোর্ট 27017 এ সংযুক্ত করুন
  8. প্রমাণীকরণের ডাটাবেসে স্যুইচ করুন: অ্যাডমিন db.auth ("myUserAdmin", "abc123" ব্যবহার করুন

3

মঙ্গোডিবিতে নিম্নলিখিত হিসাবে সংযোগের জন্য সর্বোত্তম অনুশীলন:

  1. প্রাথমিক ইনস্টলেশন পরে,

    use admin

  2. তারপরে অ্যাডমিন ব্যবহারকারী তৈরি করতে নিম্নলিখিত স্ক্রিপ্টটি চালান

    db.createUser( { user: "YourUserName", pwd: "YourPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })

নিম্নলিখিত স্ক্রিপ্টটি ডিবি-র জন্য প্রশাসক ব্যবহারকারী তৈরি করবে।

  1. db.admin ব্যবহার করে লগইন করুন

    mongo -u YourUserName -p YourPassword admin

  2. লগইন করার পরে, আপনি 1 থেকে 3 পুনরাবৃত্তি করে একই অ্যাডমিনের শংসাপত্রযুক্ত বা ভিন্ন ভিন্ন ডাটাবেসের এন নম্বর তৈরি করতে পারেন।

এটি আপনাকে মঙ্গোডিবিতে তৈরি করা বিভিন্ন সংগ্রহের জন্য পৃথক ব্যবহারকারী এবং পাসওয়ার্ড তৈরি করতে দেয়


: এই চলতে চলতে ন্যানো /etc/mongod.conf sudo এবং এই লাইন security.authorization লাগাতে পরে: সক্রিয় করা হলে, আপনি এখানে রেফারেন্স লিঙ্ক দেখতে পারেন stackoverflow.com/a/57384027/3904109
DragonFire

2

আপনি নতুন ব্যবহারকারী তৈরি করার পরে, দয়া grant read/write/rootকরে ব্যবহারকারীর অনুমতি ভুলে যাবেন না । আপনি চেষ্টা করতে পারেন

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.