PostgreSQL udelí používateľovi všetky oprávnenia na schému

Postgresql Udeli Pouzivatelovi Vsetky Opravnenia Na Schemu



Databázy sú kľúčové a úlohou správcu je kontrolovať, aké rôzne úlohy môžu používatelia vykonávať v rámci danej databázy. V rámci autorizácie môže administrátor definovať užívateľské entity v rámci databázy a prideľovať alebo odoberať rolám rôzne privilégiá.

Týmto spôsobom získate kontrolu nad tým, kto môže pristupovať k databáze a aké privilégiá má, ak má prístup k databáze. Môžete napríklad odvolať úpravu databázy alebo udeliť všetky privilégiá pre schému používateľovi alebo používateľom v danej tabuľke. Táto príručka podrobne popisuje, ako používať PostgreSQL na udelenie všetkých privilégií na schému používateľovi.







Ako udeliť privilégiá používateľom na PostgreSQL

Keď vytvoríte novú rolu, predvolene získajú určité privilégiá. Väčšina privilégií však vyžaduje, aby ich správca udelil rôznym používateľom na reguláciu prístupu a kontroly schémy. Všetky privilégiá môžete udeliť naraz alebo samostatne.



Pre tento tutoriál vytvorte nový úlohu pomenovaný linuxhint1 .



$ sudo -iu postgres
# vytvoriť rolu linuxhint1 prihlasovacie heslo „linuxhint“;


Všimnite si, že sme prihlásení ako postgres, predvolená rola vytvorená po inštalácii PostgreSQL.






S vytvorenou rolou (používateľom) môžeme zobraziť zoznam dostupných rolí pomocou nasledujúceho príkazu:

# \ od


Dostupné roly sa zobrazia vo formáte tabuľky.




Postgres je predvolená rola a má už udelenú väčšinu privilégií. Nová rola však linuxhint1, nemá žiadne privilégiá, kým ich neudelíme.

1. Poskytnutie konkrétneho oprávnenia používateľovi

Vytvorená rola nemôže upravovať schému, pokiaľ to nepovolíte. Overme si to tak, že najprv vytvoríme tabuľku ako predvolenú rolu, postgres.

# vytvárať názvy tabuliek ( m_id int sa generuje vždy ako identita, meno vachar ( 100 ) nie je null, lname varchar ( 100 ) nie null, vek int ) ;



Môžete uviesť zoznam dostupných vzťahov, ako je uvedené nižšie:


Potom otvorte nový shell a prihláste sa do PostgreSQL pomocou inej roly, linuxhint1, ktorý sme predtým vytvorili pomocou nasledujúceho príkazu:

$ psql -V linuxhint1 -d postgres



The -d určuje, že úlohou je používať databázu Postgres.

Skúste si prečítať obsah tabuľky, ktorú sme vytvorili pomocou VYBRAŤ príkaz.

# VYBRAŤ * OD mien;


Vracia a prístup zamietnutý chyba brániaca používateľovi v prístupe k tabuľke.


V takom prípade musíme udeliť privilégiá role na výber/zobrazenie údajov z danej tabuľky pomocou nasledujúcej syntaxe:

# GRANT názov_privilégia ON názov_tabuľky TO názov_roly;


Na udelenie privilégií použite reláciu Postgres.


Po povolení skúste znova spustiť predchádzajúci príkaz.


to je všetko. Podarilo sa vám udeliť privilégium select konkrétnemu používateľovi.

2. Udelenie všetkých oprávnení na schému používateľovi

Zatiaľ sa nám podarilo udeliť používateľovi iba jedno privilégium na schému. No to nestačí. Používateľ nemôže upravovať schému, pokiaľ jej neudelíte všetky privilégiá, ako je vkladanie a aktualizácia.

Existujú rôzne spôsoby, ako to dosiahnuť. Po prvé, poďme udeliť používateľovi všetky privilégiá k danej tabuľke pomocou nasledujúcej syntaxe:

# GRANT ALL ON table_name TO role_name;



Používateľ môže interagovať a upravovať konkrétnu tabuľku. Nemôžu však pracovať s inými tabuľkami v schéme.

Komu udeliť všetky privilégiá pre všetky tabuľky v konkrétnej schéme , použite nasledujúcu syntax:

# GRANT VŠETKÝM TABUĽKÁM V SCHÉME názov_schémy TO rola_názov;



Napokon, môžete udeliť konkrétne privilégiá, ako je vkladanie alebo výber všetkých tabuliek v schéme danej role .

# GRANT názov_privilégia NA VŠETKÝCH TABUĽKÁCH V SCHÉME názov_schémy TO názov_roly;



Rola môže vybrať údaje vo všetkých tabuľkách v zadanej schéme. Takto definujete, aké privilégiá udeliť na schéme rôznym používateľom.

Záver

PostgreSQL je výkonný DBMS. Má rôzne funkcie, vrátane toho, že umožňuje správcovi udeľovať používateľom rôzne privilégiá. Udelenie všetkých privilégií pre schému používateľom znamená umožniť používateľovi upravovať a interagovať so všetkými tabuľkami v zadanej schéme. Videli sme, ako použiť tento a ďalšie spôsoby udeľovania privilégií na schéme rolám pomocou príkazu GRANT v PostgreSQL.