De reden is dat u extra privileges nodig heeft om toegang te krijgen tot een weergave of tabel. Rechten op de database dekken niet de toegang tot alle objecten erin.
Het is anders met functies:EXECUTE
privilege wordt verleend aan public
standaard. Maar de functie wordt uitgevoerd met de privileges van de huidige gebruiker. Mogelijk bent u geïnteresseerd in de SECURITY DEFINER
modifier voor CREATE FUNCTION
. Maar normaal gesproken is het voldoende om SELECT
op betrokken tafels.
Per documentatie over standaardrechten:
Afhankelijk van het type object, kunnen de aanvankelijke standaardprivileges het toekennen van enkele privileges aan
PUBLIC
omvatten . De standaard is geen openbare toegang voor tabellen, kolommen, schema's en tabelruimten;CONNECT
privilege enTEMP
privilege voor het maken van tabellen voor databases;EXECUTE
privilege voor functies; enUSAGE
privilege voor talen.
Mogelijk bent u geïnteresseerd in deze DDL-opdracht (vereist Postgres 9.0 of later):
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
Verbonden met de betreffende database natuurlijk (zie de opmerking van @marcel hieronder), en als gebruiker met voldoende privileges. Mogelijk bent u ook geïnteresseerd in de instelling DEFAULT PRIVILEGES
:
- Alles op een specifiek schema in de db toekennen aan een groepsrol in PostgreSQL
Meer gedetailleerd antwoord over het beheren van privileges:
- Hoe STANDAARDPRIVILEGES voor GEBRUIKERS beheren op een DATABASE versus SCHEMA?
pgAdmin heeft een functie voor meer geavanceerde bulkbewerkingen:
Of u kunt de systeemcatalogi doorzoeken om DDL-instructies te maken voor bulktoekenning / intrekking ...