Post

The useful commands for PostgreSQL

Common

Connect to the database from the command line

1
psql -h 127.1.2.3 -U postgres_user database_name

Database

Create a new database

1
2
# Create a new database with the custom lc_collate, lc_ctype
CREATE DATABASE "database_name" ENCODING 'UTF8' LC_COLLATE = 'ja_JP.UTF-8' LC_CTYPE = 'ja_JP.UTF-8' TEMPLATE template0;

Clone the database

1
CREATE DATABASE database_name_backup WITH TEMPLATE database_name OWNER database_user;

Rename the database

1
ALTER DATABASE database_name RENAME TO database_name_new;

Drop the database

1
DROP DATABASE database_name;

User & Role

Retrieves information about all users

1
SElECT * from pg_catalog.pg_user;

Get the database’s encoding and owner information

1
select d.datname as "Name", d.datcollate as "Collate", d.datctype as "CType", pg_catalog.pg_get_userbyid(d.datdba) as "Owner" from pg_catalog.pg_database d;

Modify the database owner

1
ALTER DATABASE database_name OWNER TO cloudsqlsuperuser;

Retrieve and summarize the table privileges granted to users

1
2
3
4
5
6
7
SELECT grantee AS user, CONCAT(table_schema, '.', table_name) AS table,
    CASE
        WHEN COUNT(privilege_type) = 7 THEN 'ALL'
        ELSE ARRAY_TO_STRING(ARRAY_AGG(privilege_type), ', ')
    END AS grants
FROM information_schema.role_table_grants
GROUP BY table_name, table_schema, grantee;

Grant specific privileges to a user

1
2
GRANT SELECT, USAGE ON SEQUENCE public.migrations_id_seq TO postgres_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO postgres_user;

Backup & restore

Refer to: Backup & Restore a database

This post is licensed under CC BY 4.0 by the author.