মঙ্গো কোনও ডাটাবেসের জন্য প্রশাসক হিসাবে একজন ব্যবহারকারী তৈরি করুন ত্রুটি বাড়ায়


17

আমি কোনও ডাটাবেসে অ্যাক্সেস করার অধিকারের অনুমতি নিয়ে একটি সাধারণ ব্যবহারকারী তৈরি করার চেষ্টা করছি এবং যে কোনও ক্রিয়া করতে পারি। createUserকমান্ডটি কার্যকর করার চেষ্টা করার সময় আমি এই ত্রুটিটি পেয়েছি:

db.createUser({ user: "mongoadmin" , pwd: "mongoadmin", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]})
2015-08-20T17:09:42.300+0000 E QUERY    Error: couldn't add user: No role named userAdminAnyDatabase@new_vehicles_catalog

উপরের সমস্যাটি তখনই ঘটে যখন আমি লেখক কনফিগারেশন সক্ষম করি এবং আমার এটির প্রয়োজন হয়।

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

দয়া করে কোন সাহায্য?

মঙ্গো সংস্করণ 3.0.5 ব্যবহার করে ।

পরিষেবাটি অ্যামাজন লিনাক্স এএমআই 2015.03 (এইচভিএম), এসএসডি ভলিউমের ধরণ - ami-1ecae776 এ রয়েছে

উত্তর:


22

ব্যবহারকারীর প্রশাসনিক ডাটাবেসে '... যেকোনও ডেটাবেস' ভূমিকা যুক্ত করা উচিত:

use admin
db.createUser({ user: "mongoadmin" , pwd: "mongoadmin", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]})

যে কোনও ডাটাবেস:

  • ডাটাবেস ব্যবহারকারী ভূমিকা
  • ডাটাবেস প্রশাসনের ভূমিকা

প্রশাসন ডাটাবেস:

  • ক্লাস্টার প্রশাসনের ভূমিকা
  • ব্যাকআপ এবং পুনরুদ্ধারের ভূমিকা
  • সমস্ত ডেটাবেস ভূমিকা

অতিরিক্ত: বিভিন্ন ডাটাবেস এবং অ্যাডমিনে বিভিন্ন ভূমিকা দেওয়ার জন্য:

db.createUser({user:"replSetManager",pwd:"password",roles:[{role:"clusterManager",db:"admin"},{role:"dbOwner", db:"adminsblog"},{role:"readWrite", db:"departmentblog"},{role:"read", db:"otherblog"}]})

1
আমি অ্যাডমিন ডাটাবেসে মঙ্গোডমিন ব্যবহারকারী তৈরি করি তবে আমি যখন অন্য ডাটাবেসে কোনও পদক্ষেপ নেওয়ার চেষ্টা করি তখন অনুমোদনের একটি ত্রুটি পাই।
রবার্ট

আপনি কোন পদক্ষেপের চেষ্টা করেছেন? দেখুন: ডকস.মোংডব.অর্গ
ম্যানুয়াল

0

অনুযায়ী MongoDB BOL প্রমাণীকরণ সক্ষম করুন প্রবেশাধিকার নিয়ন্ত্রণ সক্ষম থাকলে, তা নিশ্চিত আপনার সাথে একটি ব্যবহারকারী আছে userAdmin বা userAdminAnyDatabase অ্যাডমিন ডাটাবেসের মধ্যে ভূমিকা। এই ব্যবহারকারী ব্যবহারকারী এবং ভূমিকা যেমন প্রশাসক করতে পারেন: ব্যবহারকারী তৈরি করুন, ব্যবহারকারীদের কাছ থেকে ভূমিকা মঞ্জুর করুন বা প্রত্যাহার করুন এবং শুল্কের ভূমিকা তৈরি বা সংশোধন করুন।

আপনি অ্যাক্সেস নিয়ন্ত্রণ সক্ষম করার আগে বা পরে ব্যবহারকারী তৈরি করতে পারেন। যদি আপনি কোনও ব্যবহারকারী তৈরি করার আগে অ্যাক্সেস নিয়ন্ত্রণ সক্ষম করে থাকেন তবে মঙ্গোডিবি একটি স্থানীয় হোস্ট ব্যতিক্রম সরবরাহ করে যা আপনাকে প্রশাসক ডাটাবেসে একটি ব্যবহারকারী প্রশাসক তৈরি করতে দেয়। একবার তৈরি হয়ে গেলে, প্রয়োজনীয় অতিরিক্ত ব্যবহারকারী তৈরি করতে আপনাকে অবশ্যই প্রশাসক হিসাবে প্রমাণীকরণ করতে হবে।

কার্যপ্রণালী

নীচের পদ্ধতিটি যা এর মাধ্যমে আপনি করতে পারেন তা এখানে Enable Auth। প্রথমে অ্যাক্সেস নিয়ন্ত্রণ ছাড়াই চলমান একটি মঙ্গোডিবি ইনস্ট্যান্সে একজন ব্যবহারকারী প্রশাসক যুক্ত করুন এবং তারপরে অ্যাক্সেস নিয়ন্ত্রণ সক্ষম করে।

mongod --port 27017 --dbpath /data/db1

C:\Program Files\MongoDB\Server\3.6\bin>mongod --auth --port 27017 --dbpath /data/db1
2018-01-02T00:04:21.038-0700 I CONTROL  [initandlisten] MongoDB starting : pid=8048 port=27017 dbpath=/data/db1 64-bit host=ACSD140013
2018-01-02T00:04:21.038-0700 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2018-01-02T00:04:21.039-0700 I CONTROL  [initandlisten] db version v3.6.0
2018-01-02T00:04:21.039-0700 I CONTROL  [initandlisten] git version: a57d8e71e6998a2d0afde7edc11bd23e5661c915
2018-01-02T00:04:21.039-0700 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1u-fips  22 Sep 2016
2018-01-02T00:04:21.039-0700 I CONTROL  [initandlisten] allocator: tcmalloc
2018-01-02T00:04:21.039-0700 I CONTROL  [initandlisten] modules: none
2018-01-02T00:04:21.039-0700 I CONTROL  [initandlisten] build environment:
2018-01-02T00:04:21.039-0700 I CONTROL  [initandlisten]     distmod: 2008plus-ssl
2018-01-02T00:04:21.040-0700 I CONTROL  [initandlisten]     distarch: x86_64
2018-01-02T00:04:21.040-0700 I CONTROL  [initandlisten]     target_arch: x86_64
2018-01-02T00:04:21.040-0700 I CONTROL  [initandlisten] options: { net: { port: 27017 }, security: { authorization: "enabled" }, storage: { dbPath: "/data/db1" } }
2018-01-02T00:04:21.044-0700 I -        [initandlisten] Detected data files in /data/db1 created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-01-02T00:04:21.044-0700 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=1508M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2018-01-02T00:04:21.557-0700 I STORAGE  [initandlisten] WiredTiger message [1514876661:556397][8048:140720576475904], txn-recover: Main recovery loop: starting at 1/35584
2018-01-02T00:04:21.677-0700 I STORAGE  [initandlisten] WiredTiger message [1514876661:676479][8048:140720576475904], txn-recover: Recovering log 1 through 2
2018-01-02T00:04:21.792-0700 I STORAGE  [initandlisten] WiredTiger message [1514876661:792524][8048:140720576475904], txn-recover: Recovering log 2 through 2
2018-01-02T00:04:23.008-0700 I CONTROL  [initandlisten]
2018-01-02T00:04:23.008-0700 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.
2018-01-02T00:04:23.009-0700 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server.
2018-01-02T00:04:23.010-0700 I CONTROL  [initandlisten] **          Start the server with --bind_ip <address> to specify which IP
2018-01-02T00:04:23.010-0700 I CONTROL  [initandlisten] **          addresses it should serve responses from, or with --bind_ip_all to
2018-01-02T00:04:23.010-0700 I CONTROL  [initandlisten] **          bind to all interfaces. If this behavior is desired, start the
2018-01-02T00:04:23.010-0700 I CONTROL  [initandlisten] **          server with --bind_ip 127.0.0.1 to disable this warning.
2018-01-02T00:04:23.011-0700 I CONTROL  [initandlisten]
2018-01-02T00:04:23.011-0700 I CONTROL  [initandlisten]
2018-01-02T00:04:23.011-0700 I CONTROL  [initandlisten] ** WARNING: The file system cache of this machine is configured to be greater than 40% of the total memory. This can lead to increased memory pressure and poor performance.
2018-01-02T00:04:23.011-0700 I CONTROL  [initandlisten] See http://dochub.mongodb.org/core/wt-windows-system-file-cache
2018-01-02T00:04:23.012-0700 I CONTROL  [initandlisten]
2018-01-02T10:04:23.320+0300 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db1/diagnostic.data'
2018-01-02T10:04:23.322+0300 I NETWORK  [initandlisten] waiting for connections on port 27017
2018-01-02T10:05:09.214+0300 I NETWORK  [listener] connection accepted from 127.0.0.1:64482 #1 (1 connection now open)

দৃষ্টান্তের সাথে সংযুক্ত করুন

উদাহরণস্বরূপ, উদাহরণের সাথে একটি mongoশেল সংযুক্ত করুন ।

mongo --port 27017

অতিরিক্ত কমান্ড লাইন সংযোগ স্থাপনের জন্য উপযুক্ত হিসেবে বিকল্প নির্দিষ্ট mongoযেমন আপনার স্থাপনার জন্য শেল, --host

ব্যবহারকারী প্রশাসক তৈরি করুন

উদাহরণস্বরূপ, এখানে অ্যাডমিন ডাটাবেসে userAdminAnyDatabaseভূমিকা সহ কোনও ব্যবহারকারী যুক্ত করুন । উদাহরণস্বরূপ, নিম্নলিখিত ব্যবহারকারী সৃষ্টি myUserAdminমধ্যে অ্যাডমিন ডাটাবেসের :

> use admin
switched to db admin
> use admin
switched to db admin
> db.createUser(
...   {
...     user: "mongoadmin",
...     pwd: "mongoadmin",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
...   }
... )
Successfully added user: {
        "user" : "mongoadmin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

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

mongoশেলটি সংযোগ বিচ্ছিন্ন করুন ।

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

mongod--Auth কমান্ড লাইন বিকল্পের সাহায্যে উদাহরণটি পুনরায় আরম্ভ করুন অথবা, যদি কোনও কনফিগারেশন ফাইল ব্যবহার করা হয়, তবে সুরক্ষা.অধিকারকরণ সেটিংস

mongod --auth --port 27017 --dbpath /data/db1

এই ক্লায়েন্টগুলির সাথে সংযুক্ত গ্রাহকদের এখন তাদের MongoDBব্যবহারকারী হিসাবে প্রমাণ করতে হবে। ক্লায়েন্টরা কেবল তাদের নির্ধারিত ভূমিকা দ্বারা নির্ধারিত ক্রিয়া সম্পাদন করতে পারে।

ব্যবহারকারী প্রশাসক হিসাবে সংযুক্ত এবং প্রমাণীকরণ

mongoশেলটি ব্যবহার করে আপনি:

  • ব্যবহারকারীর শংসাপত্রগুলি পাস করার মাধ্যমে প্রমাণীকরণের সাথে সংযুক্ত হন বা

  • প্রথমে উইথথ অথেনটিকেশনটি সংযুক্ত করুন এবং তারপরে অনুমোদনের জন্য db.auth () পদ্ধতিটি ইস্যু করুন ।

সংযোগের সময় প্রমাণীকরণ mongoকরতে -u <username>, -p <password>, and the --authenticationDatabase <database>কমান্ড লাইন বিকল্পগুলির সাথে একটি শেল শুরু করুন:

C:\Program Files\MongoDB\Server\3.6\bin>mongo --port 27017 -u "mongoadmin" -p "mongoadmin" --authenticationDatabase "admin"
MongoDB shell version v3.6.0
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.6.0
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
2018-01-02T10:05:09.248+0300 I STORAGE  [main] In File::open(), CreateFileW for 'H:\\.mongorc.js' failed with Access is denied.

সংযোগের পরে প্রমাণীকরণ করা

সংযুক্ত করুন mongoথেকে শেল mongod:

mongo --port 27017

প্রমাণীকরণের ডাটাবেসে স্যুইচ করুন (এই ক্ষেত্রে অ্যাডমিন) এবং প্রমাণীকরণের জন্য db.auth (,) পদ্ধতি ব্যবহার করুন :

> use admin
switched to db admin
> db.auth("mongoadmin","mongoadmin")
1
>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.