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"}]})
Разбивка на кода:
- Първо и преди всичко трябва да посочите „потребителско име“ и „парола“, които да бъдат създадени.
- Определете ролята на този потребител, който е администратор на базата данни; това се присвоява на ролята „user admin“, тъй като ролята позволява на потребителя да има административни привилегии само към базата данни, посочена в DB
- Накрая, параметърът 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 под ролята на администратор. Тази статия е изминала повече и илюстрира как да се предоставят роли и права. Надяваме се, че ви е полезно. Ако да, не забравяйте да оставите забележка в секцията за коментари по-долу.