sql >> Databáze >  >> RDS >> PostgreSQL

Jak udělit všechna oprávnění k pohledům libovolnému uživateli

Důvodem je, že pro přístup k pohledu nebo tabulce potřebujete další oprávnění. Oprávnění v databázi nepokrývají přístup ke všem objektům v ní.

U funkcí je to jiné:EXECUTE oprávnění je uděleno public ve výchozím stavu. Ale funkce se provádí s oprávněními aktuálního uživatele. Možná vás bude zajímat SECURITY DEFINER modifikátor pro CREATE FUNCTION . Normálně ale stačí udělit SELECT na příslušných stolech.

Podle dokumentace o výchozích oprávněních:

V závislosti na typu objektu mohou výchozí výchozí oprávnění zahrnovat udělení některých oprávnění PUBLIC . Výchozí hodnota je zákaz veřejného přístupu pro tabulky, sloupce, schémata a tabulkové prostory; CONNECT oprávnění a TEMP oprávnění k vytváření tabulek pro databáze; EXECUTE oprávnění k funkcím; a USAGE privilegium pro jazyky.

Možná vás bude zajímat tento příkaz DDL (vyžaduje Postgres 9.0 nebo později):

GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Samozřejmě při připojení k dané databázi (viz komentář @marcel níže) a jako uživatel s dostatečnými oprávněními. Také by vás mohlo zajímat nastavení DEFAULT PRIVILEGES :

  • Udělte vše na konkrétním schématu v databázi skupinové roli v PostgreSQL

Podrobnější odpověď, jak spravovat oprávnění:

  • Jak spravovat VÝCHOZÍ PRIVILEGIE pro UŽIVATELE v DATABÁZI vs. SCHÉMA?

pgAdmin má funkci pro sofistikovanější hromadné operace:

Nebo můžete zadat dotaz do systémových katalogů a vytvořit příkazy DDL pro hromadné udělení / zrušení ...




  1. Jak nastavit databázi WordPress MySQL v cloudu

  2. Vložení SQLite

  3. Převést Unixtime na Datetime SQL (Oracle)

  4. Komprimace konkrétního oddílu v tabulce na serveru SQL Server (T-SQL)