PostgreSQL security levels
PostgreSQL has different security levels defined on PostgreSQL objects, including tablespace, database, schema, table, foreign data wrapper, sequence, domain, language, and large object. One can have a peek into different privileges by running the \h
meta command in psql
, as follows:
Command: GRANT Description: define access privileges Syntax: GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER } [, ...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO role_specification [, ...] [ WITH GRANT OPTION ]
Database security level
To disallow users from connecting to the database by default, one needs to revoke the default database permissions from public, as follows:
$ psql car_portal -U postgres psql (10.0) Type "help" for help. car_portal=# REVOKE ALL ON DATABASE car_portal FROM public; REVOKE car_portal=# \q $ psql car_portal -U web_app_user psql: FATAL: permission denied...