মঙ্গোডিবি - প্রশাসক ব্যবহারকারী অনুমোদিত নয়


200

আমি আমার মঙ্গোডিবিতে অনুমোদনের চেষ্টা করছি।
লিনাক্সটিতে মঙ্গোডিবি ২.6.১ এর সাথে আমি এই সমস্ত করছি।
আমার মোংডকনফ ফাইলটি পুরানো সামঞ্জস্য ফর্ম্যাটে রয়েছে
(এটি ইনস্টলেশন এর সাথে এটিই এসেছে)।

1) আমি এখানে বর্ণিত হিসাবে প্রশাসক ব্যবহারকারী তৈরি করেছি (3)

http://docs.mongodb.org/manual/tutorial/add-user-administrator/

2) আমি তখন এই লাইনটিকে সংবিধানিত করে মঙ্গড কোডফ সম্পাদনা করেছি

auth = true

3) অবশেষে আমি মংডোড পরিষেবাটি পুনরায় চালু করেছিলাম এবং আমি এর সাথে লগইন করার চেষ্টা করেছি:

/usr/bin/mongo localhost:27017/admin -u sa -p pwd

4) আমি সংযোগ করতে পারি তবে এটি সংযোগের পরে এটি বলে।

MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

5) এখন মনে হচ্ছে saআমি তৈরি এই ব্যবহারকারীর কোনও অনুমতি নেই।

root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
        "$err" : "not authorized for query on test.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>

সমস্যাটা কি? আমি এই পুরো পদ্ধতিটি 3 বার পুনরাবৃত্তি করেছি এবং
আমি মনে করি যে আমি মঙ্গোডিবি ডক্সে বর্ণিত হিসাবে এটি সব করেছি। কিন্তু এটি কাজ করে না।
আমি প্রত্যাশা করছিলাম যে এই saব্যবহারকারীর যে কোনও কিছু করার জন্য অনুমোদিত হবেন যাতে
তিনি অন্য ব্যবহারকারী তৈরি করতে পারেন এবং তাদের আরও নির্দিষ্ট অনুমতি দিতে পারেন।


20
এটি খুব বিরক্তিকর বা খারাপভাবে নথিভুক্ত। আমি সেখানে নিজেকে লড়াই করে যাচ্ছিলাম। শেষ
অবধি

উত্তর:


471

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

use admin
db.createUser(
  {
    user: 'admin',
    pwd: 'password',
    roles: [ { role: 'root', db: 'admin' } ]
  }
);
exit;

আপনি যদি ইতিমধ্যে adminব্যবহারকারী তৈরি করে থাকেন তবে আপনি এই ভূমিকাটি পরিবর্তন করতে পারেন:

use admin;
db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

সম্পূর্ণ প্রমাণীকরণের সেটিং রেফারেন্সের জন্য, ইন্টারনেটে কয়েক ঘন্টা অনুসন্ধানের পরে আমি যে পদক্ষেপগুলি সংকলন করেছি তা দেখুন।


154
ডব্লিউটিএফ ?! এভাবে বোকা জিনিসের জন্য এক ঘন্টা হারিয়েছি। তারা ডকুমেন্টেশনের userAdminAnyDatabaseপরিবর্তে কেন রাখবে root?
akostadinov

15
ধারণাটি হ'ল আপনি প্রথমে এমন একটি ব্যবহারকারী তৈরি করেন যা কেবলমাত্র অন্য ব্যবহারকারীদের প্রশাসনের জন্য ব্যবহৃত হয় (সুতরাং ভূমিকা "ইউজারএডমিন" দিয়ে শুরু হয়) এবং কেবলমাত্র তখনই আপনার সাধারণ ব্যবহারকারী তৈরি করুন। এ জাতীয় ধারণা তৈরি করে, তবে আমি এটি প্রথমবারের মতো পাইনি ... @ ককাস্টাডিনভ
টমট্যাচে

10
এটি আমার জন্য মঙ্গোডিবি v3.4.7 এ কাজ করে নি:db.grantRolesToUser('admin',[{ role: "root", db: "admin" }])
ব্যবহারকারী 124384

2
@Cerin এই কোড DID আমার জন্য কাজ: db.grantRolesToUser('admin',[{ role: "root", db: "admin" }]), এবং যে তোলে আমাকে বিভ্রান্ত। আমি কোনও কমান্ড চালানোর জন্য অনুমোদিত নই, এবং তবুও আমি নিজেকে রুট করার জন্য একটি কমান্ড চালাতে পারি, এবং তারপরে এই আদেশটি চালাতে পারি। খুব অদ্ভুত: এস

2
যাঁরা db.grantRolesToUser('admin',[{ role: "root", db: "admin" }])কাজ করেননি তাদের জন্য নিশ্চিত হন যে আপনি আবার ফিরে যান use admin... একই সমস্যা ছিল, একবার আমি ফিরে স্যুইচ করার সময় এটি একটি
কবজির

37

এটি কিছুটা বিভ্রান্তিকর - আমি বিশ্বাস করি যে একটি ডেটাবেস ক্যোয়ারী করার জন্য আপনাকে নিজের পাঠ্য রাইট দিতে হবে। ডাবডমিন বা ইউজারডমিন সহ কোনও ব্যবহারকারী ডাটাবেসটি পরিচালনা করতে পারেন (নিজেকে অতিরিক্ত অধিকার প্রদান সহ) তবে কোয়েরি করতে বা ডেটা লিখতে পারেন না।

সুতরাং নিজেকে পড়ার লেখার মঞ্জুরি দিন এবং আপনার ভাল হওয়া উচিত -

http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite


আমি নিশ্চিত নই যে এই উত্তরটি প্রশ্নের সাথে সম্পর্কিত, তবে এটি কোনওভাবেই ভুল তথ্য সরবরাহ করে। ডিবিউনার ভূমিকায় রিড রাইট রোল অন্তর্ভুক্ত রয়েছে: ডকস.মংগড.বি.আর
অ্যান্ডি ট্রিগস

10
উত্তরটি সঠিক - ডাবডমিন এবং ইউজারডমিন ভূমিকা (যা মূল পোস্টার সম্পর্কে জিজ্ঞাসা করেছিল) রিড রাইট অন্তর্ভুক্ত করে না। DbOwner করে কিন্তু মূল পোস্টারটি এটি ব্যবহার করছিল এবং সে সম্পর্কে জিজ্ঞাসা করছিল।
জন পেট্রন

3
তুমি একদমই সঠিক. দুঃক্ষিত। আমি অনেক দীর্ঘ বিচলিত ভূমিকা কাটিয়েছি এবং বিস্মিত হয়েছি।
অ্যান্ডি ট্রিগস

সুতরাং আপনার কাছে প্রকৃত মঙ্গোদব সার্ভারটি অ্যাক্সেস করার জন্য একজন প্রশাসক ব্যবহারকারী থাকতে পারেন এবং তারপরে নির্দিষ্ট ডেটাবেসগুলির জন্য অন্যরা রাখতে পারেন?
কে - এসও-তে বিষক্রিয়া বাড়ছে।

32

বর্তমান ব্যবহারকারীকে কীভাবে পরিবর্তন করবেন তার একটি দ্রুত উদাহরণ কারও পক্ষে সহায়ক হবে। এটিই আমি আসলে খুঁজছিলাম।

@ জনপেট্রনের পরামর্শ অনুসরণ করে আমি গ্র্যানট্রোলস ব্যবহারকারীদের সাথে আমার প্রশাসক ব্যবহারকারীর কাছে রিড রাইট ভূমিকাটি যুক্ত করেছি

> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version

26

আপনি চেষ্টা করতে পারেন: - প্রমাণীকরণ ডেটাবেস পতাকা ব্যবহার করে সাহায্য করে।

mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"

8

আমি জানি এই উত্তরটি এই থ্রেডটিতে সত্যিই দেরিতে আসবে তবে আমি আশা করি আপনি এটি পরীক্ষা করে দেখেছেন।

আপনি যে ত্রুটিটি পেয়েছেন তার কারণটি আপনি ব্যবহারকারীকে যে নির্দিষ্ট ভূমিকার স্বীকৃতি দিয়েছিলেন, তার ভিত্তিতে তৈরি হয়েছে যা আপনি এখনই সংগ্রহ করেছেন এবং হ্যাঁ সেই ব্যবহারকারীকে ভূমিকাটি দেওয়া rootআপনার সমস্যার সমাধান করবে তবে এই ভূমিকাগুলি দেওয়ার আগে আপনাকে প্রথমে ঠিক কী করবে তা বুঝতে হবে must ব্যবহারকারীদের।

টিউটোরিয়ালে আপনি ব্যবহারকারীকে এমন userAdminAnyDatabaseভূমিকাটি প্রদান করেছেন যা মূলত ব্যবহারকারীকে আপনার সমস্ত ডাটাবেসের ব্যবহারকারীদের পরিচালনা করার ক্ষমতা দেয়। আপনি আপনার ব্যবহারকারীর সাথে যা করার চেষ্টা করছেন তা তার ভূমিকা সংজ্ঞার বাইরে।

rootভূমিকা এই ভূমিকা এটা সংজ্ঞা সেইসাথে অন্তর্ভুক্ত হয়েছে readWriteAnyDatabase, dbAdminAnyDatabaseএটি একটি সুপার-ইউজার তৈরীর এবং অন্যান্য ভূমিকা (মূলত কারণ আপনি এটি নিয়ে কিছু করতে পারেন)।

ব্যবহারকারীদের নির্দিষ্ট কাজগুলি শেষ করার জন্য আপনাকে কোন ভূমিকা নিতে হবে তা দেখার জন্য আপনি ভূমিকা সংজ্ঞাগুলি পরীক্ষা করে দেখতে পারেন। https://docs.mongodb.com/manual/references/built-in-roles/ আপনার সমস্ত ব্যবহারকারীকে সুপার আপ করা ঠিক নয় :)


সুতরাং, যদি মূল না হয়, তবে সমস্যাটি সমাধান করার জন্য আপনি কোন ভূমিকাটির পরামর্শ দিচ্ছেন?
হেন্ডি ইরাওয়ান

হাই, হেন্ডি ইরাওয়ান, আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি ঠিক কী করতে চান আপনার প্রতিটি ব্যবহারকারীকে কী করতে হবে এবং তাদের এমন ভূমিকা দিতে হবে যা তাদের কেবল এটি করতে সক্ষম করে। উদাহরণস্বরূপ, যদি আপনি কেবল কোনও ব্যবহারকারী পড়তে চান (যা প্রশ্নটি যা করার চেষ্টা করে show collections) আপনার উচিত সেই ক্ষমতাটি এবং অন্য কিছু দেওয়া roles: [ { role: "read", db: "admin" } ]। লক্ষ্য করুন যে এখানে ভূমিকাটি পড়েছে, এটি ডেটাবেস নির্দিষ্ট এবং আপনি এটি ছাড়া আর কিছুই করতে পারবেন না। অন্যান্য ভূমিকাগুলির জন্য এই লিঙ্কটি দেখুন m mongodb.com/manual/references/built-in-roles
এল পাঞ্চ

সুতরাং এখানে প্রশ্নের উত্তর ("উদাহরণস্বরূপ" নয়) "পড়া" হয়?
হেন্দি ইরওয়ান

হ্যাঁ. মনে রাখবেন যে ব্যবহারকারী কেবল নির্দিষ্ট ডিবি পড়ার ক্ষমতা পাবে।
এল পাঞ্চ

2

এটি একটি সাধারণ প্রশ্ন।

  1. এটি আপনার পক্ষে অবশ্যই লক্ষ্য ডিবি নয় প্রশাসকের স্যুইচ করা জরুরি ।

yourDB ব্যবহার করুন

  1. দ্বারা আপনার ডিবি প্রমাণীকরণ চেক করুন

ব্যবহারকারীদের দেখান

  1. যদি আপনি একটি}} খালি অবজেক্ট পান তবে তা প্রশ্ন। আপনার শুধু টাইপ করা দরকার

db.createUser ({ব্যবহারকারী: "yourUser", pwd: "পাসওয়ার্ড", ভূমিকা: ["রিড রাইট", "dbAdmin"]})

অথবা

db.grantRolesToUser ('yourUser', [{ভূমিকা: "dbAdmin", db: "yourDB"}])


0

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

শুভকামনা!


2
আমি জানি না কেন এই উত্তরটি হ্রাস পেয়েছিল; এটি একটি বৈধ পরামর্শ। উদাহরণস্বরূপ, আমি একটি পরিচালনা কনসোল চালিত করেছি যা টুকাট টুপিটির নিচে চলছে। আপনি যদি কোনও স্থানীয় সার্ভার (কোনও প্রকারের) শুরু করেন তবে আপনি এটির সাথে সংযোগ দেওয়ার চেষ্টা করে চালাচ্ছেন কিনা তা সম্ভবত পরীক্ষা করে দেখুন। প্রথম সংযোগটি সফল হবে। তারপরে আপনি আপনার সার্ভারের লগগুলি পরীক্ষা করার আগে এবং দেখে নিন যে আপনার সার্ভারটি পছন্দসই বন্দরে বাঁধতে পারে না তার আগে "লুকানো" সার্ভারের সাথে কুস্তিগী রাখবেন।
পল

0

এছাড়াও, লক্ষ্য করুন যে আপনার মঙ্গো শেল ক্লায়েন্ট যদি উদাহরণের সাথে সঠিকভাবে সংযোগ করতে ব্যর্থ হয় তবে mongodআপনি এই জাতীয় "অনুমতি অস্বীকৃত" ত্রুটিগুলি পেতে পারেন।

নিশ্চিত হয়ে নিন যে আপনার ক্লায়েন্টটি সংযোগ পোর্টটি চেক করে কোনও সংযোগ খুলছে, তবে আপনি যে পোর্টটি ব্যবহার করছেন mongodসেটি ব্যবহার হচ্ছে না তাও নিশ্চিত করুন। আপনি --port <port>শেল এবং প্রক্রিয়া উভয়ই প্যারামিটার ব্যবহার করে একটি পৃথক বন্দর সেট করতে পারেন ।


0

আমার এই সমস্যাটি ছিল কারণ আমার মঙ্গোডিবি কম্পাসের হোস্টনামটি আমার প্রকল্পের পরিবর্তে প্রশাসকের দিকে ইঙ্গিত করেছিল problem হোস্টনামের পরে / প্রকল্পের নাম যুক্ত করে স্থির করা হয়েছে :) এটি চেষ্টা করুন:

  1. মঙ্গোডিবি অ্যাটলাস ওয়েবসাইটে আপনার প্রকল্পটি চয়ন করুন
  2. মোঙ্গোডিবি কম্পাসের সাথে সংযুক্ত / সংযুক্ত হন
  3. কম্পাস ডাউনলোড করুন / আপনার ওএস চয়ন করুন
  4. আমি 1.12 বা তার পরেও কম্পাস ব্যবহার করেছি
  5. কম্পাসের নীচে সংযোগের স্ট্রিংটি 1.12 বা তার পরে অনুলিপি করুন।
  6. মোংগোডিবি কম্পাস / কানেক্ট (উপরে বাম) / কানেক্ট করতে খুলুন
  7. সংযোগের স্ট্রিং সনাক্ত হয়েছে / হ্যাঁ /
  8. হোস্টনামের পরে আপনার প্রকল্পের নাম যুক্ত করুন: cluster9-foodie.mongodb.net/ projectname
  9. পোষ্টম্যানের মাধ্যমে সংযুক্ত এবং পরীক্ষিত এপিআই।
  10. সফল।

আপনার কোডেও একই সংযোগের স্ট্রিং ব্যবহার করুন:

  1. আগে:
    • mongodb + srv: // প্রকল্পের নাম : পাসওয়ার্ড @ cluster9-foodie.mongodb.net / অ্যাডমিন
  2. পরে:
    • MongoDB + + SRV: // projectname: পাসওয়ার্ড @ cluster9-foodie.mongodb.net / projectname

শুভকামনা।


0

mydb
db.createUser ব্যবহার করুন ({ব্যবহারকারী: "পরীক্ষা", pwd: "গোপনীয়তা", ভূমিকা: ["রিড রাইট", "ডিবিএডমিন"], পাসওয়ার্ডডিজ্টর: "সার্ভার"})


0

আপনি সম্মত হন যে আপনাকে অ্যাডমিন ডিবিতে প্রমাণীকরণ করতে হবে এবং কমপক্ষে সঠিক সুযোগ-সুবিধাগুলির সাথে একটি ভূমিকার দরকার যা ডিবি থেকে 'স্থানীয় হোস্ট ব্যতিক্রম' এড়াতে পারে (এটি মঙ্গোডিবি-এর হোস্টেড অন-প্রাঙ্গনে রয়েছে), যদিও আপনার সবকিছুই স্থানে রয়েছে এবং এখনও রয়েছে মোঙ্গো অ্যাটলাস ব্যবহার করে তৈরি করা মোঙ্গোডিবি অ্যাক্সেস করার সময় প্রায় প্রতিটি কমান্ডে অনুমোদিত ব্যতিক্রম না পাওয়া , তারপরে এখানে সেই জায়গাটি রয়েছে যেখানে আপনি কারণটি জানতে পারেন কেন:

/dba/219003/not-authorized-on-admin-to-execute-command-mongodb-atlas-m0-free-tier-cluster?newreg=471a9a26108243d78d4ca74a87e7a115

এবং আপনি মঙ্গো আটলাসে মঙ্গোবিডি হোস্ট করেছেন কিনা তাও পরীক্ষা করে দেখুন :

https://docs.atlas.mongodb.com/unsupported-commands/


0
Use Admin :
    use admin

Create a super user : 

    db.createUser(
    {
    user: "master",
    pwd: "test@123",
    roles: [ 
    { 
    role: "readWriteAnyDatabase", 
    db: "admin" 
    }, 
    {
    "role" : "dbAdminAnyDatabase",
    "db" : "admin"
    },
    {
    "role" : "clusterAdmin",
    "db" : "admin"
    },
    "userAdminAnyDatabase" 
    ]
    }
    )

এই কোড স্নিপেটের জন্য আপনাকে ধন্যবাদ, যা কিছু সীমিত স্বল্পমেয়াদী সহায়তা সরবরাহ করতে পারে। একটি সঠিক ব্যাখ্যা কেন এটি সমস্যার একটি ভাল সমাধান তা দেখিয়ে তার দীর্ঘমেয়াদী মানকে ব্যাপকভাবে উন্নত করবে এবং ভবিষ্যতে পাঠকদের আরও অন্যান্য অনুরূপ প্রশ্নের সাথে আরও দরকারী করে তুলবে। আপনার অনুমানগুলি সহ কিছু ব্যাখ্যা যুক্ত করতে দয়া করে আপনার উত্তরটি সম্পাদনা করুন।
টবির স্পিড

-10

এটি হতে পারে কারণ আপনি মংডোবকনফ-তে noAuth = সত্য সেট করেন নি

# Turn on/off security.  Off is currently the default
noauth = true
#auth = true

এইটি সেট করার পরে পরিষেবাটি পুনরায় চালু করে ব্যবহার করুন

পরিষেবা মঙ্গড পুনরায় আরম্ভ করুন


1
ব্যবহারকারী স্পষ্টতই বলেছে যে তিনি অনুমোদনের ব্যবহার শুরু করতে চান এইভাবে তিনি অসমর্থিত লেখাকে = সত্য। আপনি অনুমোদন অক্ষম করার পরামর্শ দিচ্ছেন কেন ?!
অ্যালেক্স 75

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