( uid_4656 | 2013. 08. 27., k – 10:11 )

"ha belépsz bela-ként simán, akkor NEM tudsz user-t (role-t) meg db-t menedzselni"

de ha kiadod a SET ROLE database_admin; parancsot, akkor már igen, tudsz.

Ez az egész role-os móka amire utalnak arról szól, hogy vannak role-ok, és ahhoz jogosultságok, pl.:
- be tud lépni
- tud csinálni adatbázist
- tud csinálni táblát

A belépési joggal rendelkező role-okat login role-oknak nevezik. Ilyen pl. a bela a fenti példában, aki be tud lépni meg tud táblát csinálni, de nem tud adatbázist csinálni.

A belépési joggal nem rendelkező role-okat group role-oknak szokták hívni. Ilyen pl. a database_admin role, aki nem tud belépni, de tud pl. táblát és adatbázist is csinálni.

A mechanizmus nem egészen ez, de úgy képzeld el, hogy a login role-okat bele tudod rakni a group role-okba. Ha egy login role benne van egy group role-ban, akkor nem biztos, hogy annak jogosultságait rögtön meg is örökli, viszont fel van jogosítva arra, hogy átváltson a group role-ra és annak a nevében járjon el. A példában ezt csinálja a SET ROLE.

A dologban annyi még két trükk van:
- egyrészt, hogy a login role-ok és a group role-ok nem különülnek el egymástól ilyen élesen, valójában csak simán role-ok vannak
- másrészt meg van lehetőség arra is, hogy egy group role egy joga öröklődjön (ne kelljen set role) a group gyerekeire és arra is, hogy ne öröklődjön, KIVÉVE a CREATE DATABASE jogot, mert az sosem örökíthető.

Jó kis rendszer ez :-D