মোংডব সংযোগ ইউরিতে কীভাবে প্রমাণীকরণের ডেটাবেস এবং টার্গেট ডেটাবেস নির্দিষ্ট করবেন?


13

আমি এই সংযোগ URI ব্যবহার করছি MongoDB সাথে সংযোগ স্থাপনের জন্য: mongodb://user:password@localhost/admin। এটি adminবট প্রমাণীকরণ এবং লক্ষ্য ডেটাবেস হিসাবে ব্যবহার করবে । কীভাবে আমি ইউরিটিকে adminপ্রমাণীকরণ হিসাবে ব্যবহার করতে পারি তবে আমাকে অন্য একটি ডাটাবেসে সংযোগ করার অনুমতি দেয়? উদাহরণস্বরূপ নীচের কমান্ডটি দেখুন:

mongo --host localhost -u user -p password --authentication admin test

উপরের কমান্ডটি adminপ্রমাণীকরণ ডাটাবেস হিসাবে ব্যবহার করবে তবে ডাটাবেসে সংযুক্ত হবে test। আমি কীভাবে একইভাবে ইউরি করতে পারি?

উত্তর:


26

হ্যাঁ .. সহজেই!

mongo "mongodb://test:testpwd@localhost/test?authSource=admin"
MongoDB shell version v3.4.6
connecting to: mongodb://test:testpwd@localhost/test?authSource=admin
MongoDB server version: 3.4.6
MongoDB> db
test
MongoDB> 

আপনি "বেস" স্ট্রিংয়ের শেষে আপনার গন্তব্য ডিবি রেখেছেন এবং প্যারামিটারের লেখক উত্সে প্রমাণীকরণের ডিবি যুক্ত করেন


হ্যাঁ, আমি ঠিক এটিই সন্ধান করছি। ধন্যবাদ
জো ইয়ে ঝাও

4

সূত্র:

https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options

আপনাকে নীচের ফর্ম্যাটটি ব্যবহার করতে হবে এবং অ্যাডমিন ডাটাবেস ব্যবহার করার দরকার নেই।

MongoDB: // ব্যবহারকারী: পাসওয়ার্ড @ স্থানীয় হোস্ট / পরীক্ষা authSource = অ্যাডমিন

/ ডাটাবেস ptionচ্ছিক। সংযোগের স্ট্রিংয়ে ব্যবহারকারীর নাম: পাসওয়ার্ড @ আকারে প্রমাণীকরণ শংসাপত্রগুলি অন্তর্ভুক্ত করা হলে প্রমাণীকরণের জন্য ডাটাবেসের নাম। যদি / ডাটাবেস নির্দিষ্ট না করা হয় এবং সংযোগের স্ট্রিংয়ে শংসাপত্রগুলি অন্তর্ভুক্ত থাকে তবে ড্রাইভার অ্যাডমিন ডাটাবেসে প্রমাণীকরণ করবে।

আপনার testডাটাবেসে কোনও ব্যবহারকারী আছে তা নিশ্চিত করুন । এই নথির বিভাগ 6 দেখুন।

প্রমাণীকরণ সক্ষম করুন

আপনার স্থাপনার জন্য প্রয়োজন হিসাবে অতিরিক্ত ব্যবহারকারী তৈরি করুন।

আপনি যে ডাটাবেসটি ব্যবহারকারী তৈরি করেন (এটি উদাহরণস্বরূপ, পরীক্ষা) সেই ব্যবহারকারীর প্রমাণীকরণ ডাটাবেস। যদিও ব্যবহারকারী এই ডাটাবেসে প্রমাণীকরণ করবে তবে ব্যবহারকারীর অন্যান্য ডাটাবেসে ভূমিকা থাকতে পারে; অর্থাৎ ব্যবহারকারীর প্রমাণীকরণ ডাটাবেস ব্যবহারকারীর সুবিধাগুলি সীমাবদ্ধ করে না।

use test
db.createUser(
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

আমি এই ইউরি চেষ্টা করেছি কিন্তু কাজ করে না। কারণ এটি testপ্রমাণীকরণ ডাটাবেস হিসাবে ব্যবহার করার চেষ্টা করে যা সঠিক নয়। আমাকে adminপ্রমাণীকরণের ডাটাবেস হিসাবে ব্যবহার করতে হবে এবং ডাটাবেসে সংযুক্ত হতে হবে test
জো ইয়ে ঝাও

পরিবর্তিত উত্তর।
স্কেল ওয়ার্ল্ডওয়াইড

আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ. তবে আমি ডাটাবেসের উদাহরণে ব্যবহারকারীর ভূমিকা পরিবর্তন করতে চাই না। উদাহরণস্বরূপ কোনও পরিবর্তন না করার কোনও সমাধান আছে কি?
জো ইয়ে ঝাও

এটিই মোঙ্গোডিবি ডিজাইন করেছে।
স্কেল ওয়ার্ল্ডওয়াইড

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