PostgreSQL udělte uživateli všechna oprávnění ke schématu

Postgresql Udelte Uzivateli Vsechna Opravneni Ke Schematu



Databáze jsou klíčové a je na správci, aby řídil, jaké různé role mohou uživatelé v dané databázi dělat. V rámci autorizace může administrátor definovat uživatelské entity v rámci databáze a udělovat nebo odebírat různá oprávnění rolím.

Tímto způsobem získáte kontrolu nad tím, kdo může přistupovat k databázi a jaká oprávnění má, pokud má přístup k databázi. Můžete například zrušit úpravu databáze nebo udělit všechna oprávnění ke schématu uživateli nebo uživatelům v dané tabulce. Tato příručka podrobně popisuje, jak pomocí PostgreSQL udělit uživateli všechna oprávnění ke schématu.







Jak udělit oprávnění uživatelům na PostgreSQL

Když vytvoříte novou roli, získají ve výchozím nastavení některá oprávnění. Většina oprávnění však vyžaduje, aby je správce udělil různým uživatelům za účelem regulace přístupu a řízení schématu. Všechna oprávnění můžete udělit najednou nebo samostatně.



Pro tento tutoriál vytvořte nový role jmenoval linuxhint 1 .



$ sudo -iu postgres
# vytvořit roli linuxhint1 přihlašovací heslo ‚linuxhint‘;


Všimněte si, že jsme přihlášeni jako postgres, výchozí role vytvořená po instalaci PostgreSQL.






S vytvořenou rolí (uživatelem) můžeme vypsat dostupné role pomocí následujícího příkazu:

# \ z


Dostupné role se zobrazí ve formátu tabulky.




Postgres je výchozí role a má již udělenou většinu oprávnění. Nicméně nová role, linuxhint1, nemá žádná privilegia, dokud je neudělíme.

1. Udělení konkrétního oprávnění uživateli

Vytvořená role nemůže změnit schéma, pokud to nepovolíte. Pojďme si to ověřit tak, že nejprve vytvoříme tabulku jako výchozí roli, postgres.

# vytvářet názvy tabulek ( m_id int generováno vždy tak jako identita, jméno vachar ( 100 ) není null, lname varchar ( 100 ) není null, věk int ) ;



Můžete uvést seznam dostupných vztahů, jak je uvedeno níže:


Dále otevřete nový shell a přihlaste se do PostgreSQL pomocí druhé role, linuxhint1, které jsme vytvořili dříve pomocí následujícího příkazu:

$ psql -V linuxhint 1 -d postgres



The -d určuje, že role je používat databázi Postgres.

Zkuste si přečíst obsah tabulky, kterou jsme vytvořili pomocí VYBRAT příkaz.

# VYBRAT * OD jmen;


Vrací a přístup odepřen chyba bránící uživateli v přístupu k tabulce.


V takovém případě musíme udělit oprávnění role k výběru/zobrazení dat z dané tabulky pomocí následující syntaxe:

# GRANT název_práva ON název_tabulky TO název_role;


Chcete-li udělit oprávnění, použijte relaci Postgres.


Po udělení zkuste znovu spustit předchozí příkaz.


A je to. Podařilo se vám udělit oprávnění vybrat konkrétnímu uživateli.

2. Udělení všech oprávnění ke schématu uživateli

Zatím se nám podařilo udělit uživateli pouze jedno oprávnění ke schématu. No, to je málo. Uživatel nemůže schéma upravit, pokud mu neudělíte všechna oprávnění, jako je vkládání a aktualizace.

Existují různé způsoby, jak toho dosáhnout. Za prvé, pojďme udělit uživateli všechna oprávnění k dané tabulce pomocí následující syntaxe:

# GRANT ALL ON název_tabulky TO název_role;



Uživatel může pracovat s konkrétní tabulkou a upravovat ji. Nemohou však pracovat s jinými tabulkami ve schématu.

Na udělit všechna oprávnění pro všechny tabulky v konkrétním schématu , použijte následující syntaxi:

# GRANT VŠECHNY TABULKY VE SCHÉMATU název_schématu TO název_role;



Konečně můžete udělte dané roli konkrétní oprávnění, jako je vkládání nebo výběr všech tabulek ve schématu .

# GRANT název_práva VE VŠECH TABULKÁCH VE SCHÉMATU název_schématu TO název_role;



Role může vybrat data ve všech tabulkách v zadaném schématu. Takto definujete, jaká oprávnění udělit ve schématu různým uživatelům.

Závěr

PostgreSQL je výkonný DBMS. Má různé funkce, včetně toho, že umožňuje správci udělovat uživatelům různá oprávnění. Udělení všech oprávnění ke schématu uživatelům znamená umožnit uživateli upravovat a pracovat se všemi tabulkami v zadaném schématu. Viděli jsme, jak použít tento a další způsoby udělování oprávnění ve schématu rolím pomocí příkazu GRANT v PostgreSQL.