MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да създадете потребител и да добавите роля в MongoDB

MongoDB е междуплатформена документно-ориентирана база данни, която прави съхранението и извличането на данни бързо и лесно. Базата данни използва структура, подобна на JSON, за документите, позната предимно на съвременните приложения.

MongoDB използва колекции и ръкописи, при които документите се състоят от двойки ключ-стойност, основната единица данни в MongoDB. За разлика от тях, колекциите съдържат функции и документи, еквивалентни на таблици на релационни бази данни.

Създайте нов потребител в MongoDB

За да добави нови потребители към системата, MongoDB предоставя вътрешна техника, известна като db.createUser(). За разлика от традиционните системи за бази данни, потребителите на MongoDB са обвързани с локална база данни, наречена база данни за удостоверяване. По този начин те не са глобално обвързани, както конвенционалните SQL бази данни.

Освен това базата данни за удостоверяване и името на потребителя служат като уникален идентификатор. Следователно, ако двама потребители са създадени в различни бази данни, но споделят едни и същи имена, те се идентифицират като два отделни потребители. Следователно, ако някой иска да създаде един потребител с разрешения за множество бази данни, трябва да позволи на един потребител да има права/роли към приложимата база данни, вместо да създава потребителя много пъти в различни бази данни.

Пример:

db.createUser(

{       user: "Foss",

        pwd: "password",

         roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})

Команди за управление на потребителите

Име/и Описание
createUser Този метод създава нов потребител.
dropAllUsersFromDatabase Изтрива всички потребители от база данни.
dropUser Предоставя задача и нейните привилегии на потребител.
grantRolesToUser На потребител се присвояват роля и свързаните с нея привилегии.
revokeRolesFromUser Премахва ролята на потребителя.
updateUser Този метод се използва за актуализиране на данните на потребителя.
usersInfo Този метод връща информация за предоставените потребители.

Добавяне на потребител

Когато добавяте потребителя към определена БД, използвайте метода “db.createUser()”. Важно е да се отбележи, че добавянето на потребители с опции е много по-лесно от вмъкването на потребителски документ в нерелационна база данни.

Пример:

use foss               // specify the DB

db.createUser(

  {

    user: "fosslinux",

    pwd: passwordPrompt(),  // or cleartext password if you wish

    roles: [

       { role: "read", db: "foss" },

       { role: "read", db: "articles" },

       { role: "read", db: "tutorials" },

       { role: "readWrite", db: "tutorialguides" }

    ]

  }

)

След като сте свързали екземпляра MongoDB в горния пример, можете да го прикачите към foss DB, за да изпълните командата db.createUser(). Използваната база данни ще действа като база данни за удостоверяване на потребителя.

Паролата и потребителското име се предоставят в документа, който съдържа извикването на нашия метод като двойки ключ-стойност. Използването на роли контролира достъпа до бази данни. Потребителят трябва да има роля за достъп до всяка база данни, дори до собствената си база данни за удостоверяване. Също така на потребителя се предоставя достъп до други бази данни в системата, използвайки роли. По този начин привилегиите на потребителя не са ограничени до тяхната база данни за удостоверяване. Следователно това позволява на потребителите да имат различни привилегии в много бази данни, ако е необходимо. Принципът на най-ниските привилегии позволява на потребителите да поддържат възможно най-малък обхват на достъп до базата данни.‍

Как да създадете потребител на администратор в MongoDB

Създаването на администратор на потребител в MongoDB се извършва с помощта на метода db.createUser(), който ви позволява да създадете потребител. Въпреки това, след като създадете потребител, трябва да зададете администраторски роли. Тези роли дават на потребителя администраторски права.

Създайте потребител за една база данни в MongoDB

Ако искаме да създадем потребител, който може да работи само с една база данни, можем да използваме подобна команда, както по-горе, но трябва да използваме опцията „userAdmin“ само веднъж.

Пример:

db.createUser(

{        user: "Fosslinux",

         pwd: "password",

         roles:[{role: "userAdmin" , db:"Foss"}]})

Разбивка на кода:

  1. Първо и преди всичко трябва да посочите „потребителско име“ и „парола“, които да бъдат създадени.
  2. Определете ролята на този потребител, който е администратор на базата данни; това се присвоява на ролята „user admin“, тъй като ролята позволява на потребителя да има административни привилегии само към базата данни, посочена в DB
  3. Накрая, параметърът DB задава базата данни, върху която Потребителят трябва да има администраторски права.

Управление на потребителите

За да управлявате потребителите, човек трябва да разбере ролите, които трябва да бъдат дефинирани, тъй като MongoDB има цял списък от функции като роля за четене и роля за четене-запис. Командата „read role“ позволява само достъп само за четене до базите данни. „Ролята за четене и запис“ осигурява достъп за четене и запис до базата данни; това означава, че потребителят може да издава команди за актуализиране, вмъкване и изтриване на колекциите в тази база данни.

Пример:

db.createUser(
{
            user: "Foss",

            pwd: "password",

            roles:[

            {
                        role: "read" , db:"Tutorials"},

    {
                        role: "readWrite" , db:"Guides"}

            }
                          ]
})

Горният пример показва, че потребител, известен като Foss, е създаден и му се присвояват няколко роли в множество DB. В същия модел на Foss се дава разрешение само за четене в базата данни „Уроци“ и разрешения за четене-запис в базата данни „Ръководства“.

Добавяне на роли към MongoDB

Ролите предоставят на потребителите достъп до ресурси на MongoDB. Освен това MongoDB предоставя няколко вградени роли, които позволяват на администраторите да контролират достъпа до система MongoDB. Въпреки това, когато тези роли не могат да опишат желания набор от привилегии, човек може да създаде нови роли в конкретна база данни. С изключение на функциите, създадени в администраторската база данни, ролята може да включва само права, които се прилагат към нейната база данни, и тези, наследени от други роли.

Роля, дефинирана в администраторската база данни, може да съдържа права, приложими към администраторската база данни, други бази данни или ресурса на клъстера и може да наследи роли от други бази данни. За да установите нова роля, използвайте „db.createRole()“ и посочете масива с права и наследените роли.

MongoDB дефинира ролите уникално, като комбинира името на базата данни с името на ролята. Всяка роля е обхвата на базата данни, която създавате, но MongoDB съхранява цялата информация за ролята в колекцията adminSystemRoles в администраторската база данни. Например действията за творческа роля и предоставяне на роли в ресурса на базата данни трябва да гарантират, че ролите се създават и предоставят в базата данни. GrantRole определя привилегиите за новите роли и ролите за наследяване. User AdminAnyDatabase и потребителският администратор с вградени роли предоставят действията CreateRole и предоставят роли на съответните им ресурси.

За да създадете роля с посочените ограничения за удостоверяване, трябва да зададете действие AuthenticationRetrictions върху ресурса на базата данни, който след това се създава функцията.

Методът db.grantRole to User () приема следните аргументи;

Параметър Тип Описание
Потребител Низ Включва името на потребителя, на когото да се предоставят ролите.
Роли Масив Включва масив от допълнителни роли, които да се предоставят на потребителя.
Напишете загриженост Документ Не е задължително и е насочено към промяна на командата. Също така приема същите полета с командата get last error.

Параметърът roles може да посочи както дефинираните от потребителя, така и вградените функции, което може да се постигне чрез избиране на ролята с нейното име. Това се постига чрез свързване с mongod (основен процес на демон за системата MongoDB, който обработва заявки за данни, изпълнява операции за управление на фона и управлява достъпа до данни). Като алтернатива, mongos (който е отговорен за установяване на връзка между клиентските приложения и раздробения клъстер), с правата, дадени в раздела с изискванията. Например моят потребителски администратор, създаден в активиран контрол на достъпа, може да създава роли в администратора и други бази данни.

Команди за управление на роли

Име\s Описание
createRole Създава роля и казва какво може да прави.
dropRole Премахва ролята, която е зададена от потребителя.
dropAllRolesFromDatabase Премахва всички роли, които потребителите задават от база данни.
grantPrivilegesToRole присвоява привилегии на избрана от потребителя роля.
grantRolesToRole указва от кои роли дефинирана от потребителя роля може да наследи привилегии.
invalidateUserCache Когато използвате invalidateUserCache, кешът в паметта на потребителска информация, като идентификационни данни и роли, се изтрива.
revokePrivilegesFromRole премахва привилегиите от дефинирана от потребителя роля, която ги има.
revokeRolesFromRole премахва наследените роли от дефинирана от потребителя роля, която не желаете.
rolesInfo връща информация за желаната от вас роля или роли.
updateRole Актуализира роля, която е настроена от потребителя.

Заключение

Базата данни MongoDB, която позволява съхранението и извличането на данни да бъде лесно и бързо, може да позволи на човек да създаде потребител с помощта на командата “db.createUser()”. От друга страна, командата „AdminAnyDatabase“ предоставя на потребителите всички привилегии за достъп до DB под ролята на администратор. Тази статия е изминала повече и илюстрира как да се предоставят роли и права. Надяваме се, че ви е полезно. Ако да, не забравяйте да оставите забележка в секцията за коментари по-долу.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Хибернация с MongoDB

  2. Къде е базата данни на meteor MongoDB?

  3. Защо се препоръчва да не затваряте MongoDB връзка никъде в кода на Node.js?

  4. Как да съхранявам резултати от динамично генерирани формуляри в MongoDb?

  5. не можа да се свърже със сървър 127.0.0.1 shell/mongo.js