Basic commands
PGPASSWORD=<password> psql -h <host> -U <user> -d <database>`
\l -- list databases
\c <db> -- switch database
\dn -- show schemas
SET search_path TO <schema>;
\dt -- show tables
\du -- show users
SELECT current_database();
SELECT current_schema();
DROP SCHEMA public CASCADE;Privileges
https://www.postgresql.org/docs/current/sql-alterdefaultprivileges.html
\dp -- shows privileges
\ddp -- shows default privileges
CREATE ROLE my_user NOSUPERUSER NOCREATEDB
NOCREATEROLE LOGIN PASSWORD '<PASSWORD>' VALID UNTIL 'infinity';
grant connect on database "db_name" to my_user;
-- shows connect
select db.datname, r.rolname, has_database_privilege(r.rolname, db.datname, 'connect')
from pg_roles r
cross join pg_database db
where r.rolcanlogin and db.datallowconn
order by db.datname, r.rolname;
Export / Import
pg_dump -U admin DBNAME > /tmp/file.sql
pg_restore -U admin -C /tmp/file.sql Docker-Compose
container_name: postgres
image: postgres:10.6-alpine
environment:
- POSTGRES_DB=db
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
volumes:
- ${PWD}/postgres-data:/var/lib/postgresql/data
ports:
- "5432:5432"
# sql -h localhost -U postgres -d db