Les bases de dades són crucials i és feina de l'administrador controlar quines funcions poden fer els usuaris dins d'una base de dades determinada. Com a part de l'autorització, l'administrador pot definir entitats d'usuari dins de la base de dades i concedir o revocar diversos privilegis als rols.
D'aquesta manera, obtindreu el control sobre qui pot accedir a una base de dades i quins privilegis tenen si poden accedir a la base de dades. Per exemple, podeu revocar la modificació de la base de dades o concedir tots els privilegis de l'esquema a un usuari o usuaris d'una taula determinada. Aquesta guia detalla com utilitzar PostgreSQL per concedir a un usuari tots els privilegis de l'esquema a un usuari.
Com concedir privilegis als usuaris a PostgreSQL
Quan creeu un rol nou, obtenen alguns privilegis de manera predeterminada. Tanmateix, la majoria dels privilegis requereixen que l'administrador els concedeixi a diferents usuaris per regular l'accés i el control d'un esquema. Podeu concedir tots els privilegis alhora o per separat.
Per a aquest tutorial, creem un nou paper nomenat linuxhint1 .
$ sudo -iu postgres
# crea la contrasenya d'inici de sessió de rol linuxhint1 'linuxhint';
Tingueu en compte que hem iniciat sessió com a postgres, el rol predeterminat creat un cop instal·leu PostgreSQL.
Amb el rol (usuari) creat, podem llistar els rols disponibles mitjançant l'ordre següent:
Els rols disponibles es mostraran en format de taula.
Postgres és el rol predeterminat i ja té la majoria de privilegis concedits. Tanmateix, el nou paper, linuxhint1, no té privilegis fins que no els atorguem.
1. Concedir un privilegi específic a un usuari
El rol creat no pot modificar l'esquema tret que ho permeteu. Comprovem-ho primer creant una taula com a funció predeterminada, postgres.
# crear noms de taules ( m_id int generat sempre com identitat, fname vachar ( 100 ) no nul, lname varchar ( 100 ) no nul, edat int ) ;
Podeu llistar les relacions disponibles, tal com es mostra a continuació:
A continuació, obriu un nou shell i inicieu sessió a PostgreSQL utilitzant l'altre rol, linuxhint1, que vam crear anteriorment amb l'ordre següent:
El -d especifica que la funció és utilitzar la base de dades Postgres.
Intenta llegir el contingut de la taula que hem creat amb el SELECCIONA comandament.
# SELECCIONA * DE noms;
Torna a permís denegat error que impedeix que l'usuari accedeixi a la taula.
En aquest cas, hem de concedir els privilegis de rol per seleccionar/veure dades de la taula donada utilitzant la sintaxi següent:
Per concedir els privilegis, utilitzeu la sessió de Postgres.
Un cop concedit, proveu de tornar a executar l'ordre anterior.
Això és. Heu aconseguit concedir el privilegi de selecció a l'usuari específic.
2. Concedir tots els privilegis de l'esquema a un usuari
Fins ara, hem aconseguit concedir només un privilegi a l'esquema a un usuari. Bé, això no és suficient. L'usuari no pot modificar l'esquema tret que li concedeixis tots els privilegis, com ara inserir i actualitzar.
Hi ha diferents maneres d'aconseguir-ho. Primer, anem concedir a l'usuari tots els privilegis d'una taula determinada utilitzant la sintaxi següent:
# GRANT ALL ON nom_taula A nom_rol;
L'usuari pot interactuar i modificar la taula en particular. Tanmateix, no poden funcionar amb altres taules de l'esquema.
A concedir tots els privilegis a totes les taules d'un esquema particular , utilitzeu la sintaxi següent:
# GARANT TOT A TOTES LES TAULES DE L'ESQUEMA nom_esquema A nom_rol;
Finalment, pots concedir privilegis específics, com ara inserir o seleccionar totes les taules de l'esquema a un rol determinat .
El rol pot seleccionar dades a totes les taules de l'esquema especificat. Així és com es defineixen quins privilegis concedir a l'esquema als diferents usuaris.
Conclusió
PostgreSQL és un SGBD potent. Té diferents característiques, inclosa permetre a l'administrador concedir diversos privilegis als usuaris. Atorgar tots els privilegis de l'esquema als usuaris significa permetre a l'usuari modificar i interactuar amb totes les taules de l'esquema especificat. Hem vist com aplicar aquesta i altres maneres d'atorgar privilegis a l'esquema als rols mitjançant la instrucció GRANT a PostgreSQL.