Many thanks to Sergey Pashinin and Christophe Pettus for their excellent videos here and here.


 

Install:

sudo apt-get install postgresql

Install Extras:

sudo apt-get install postgresql-contrib

Install Client (Command Line):

sudo apt-get install postgresql-client

Install GUI:

sudo apt-get install pgadmin3

Config Files:

cd /etc/postgresql/<<version>>/main/

Ports:

netstat -anp | grep postgre

Control:

service postgresql [force-reload, reload, restart, start, status, stop]

Shell Command Line:

sudo su postgres
cd ~
psql

List Databases:

postgres=# \l

List Users:

postgres=# \du

Quit shell:

postgres=# \q

Change root user password (From default):

postgres=# ALTER USER postgres WITH password 'ANY PASSWORD';

Create user:

postgres=# CREATE USER user1 WITH password 'ANY PASSWORD';

Change user role:

postgres=# ALTER USER user1 WITH SUPERUSER;

Delete user:

postgres=# DROP USER user1;

Change listen IP and config password encryption:

cd /etc/postgresql/<<version>>/main
sudo nano postgresql.conf

Uncomment “listen_addresses”, and fill in the IP of the server (by default PostgreSQL only listens on localhost loopback). Uncomment “password_encryption”.

Change permissions for client connections:

cd /etc/postgresql/<<version>>/main
sudo nano pg_hba.conf

Under “# IPv4 local connections” add this line…

host     all     all     <<Your Network exp. 192.168.0.0>>/<<Network Segment 16 or 24 or 32>>     md5

Config Memory, Checkpoints, and Planner Constants:

cd /etc/postgresql/<<version>>/main
sudo nano postgresql.conf
         ### Change:
shared_buffers = 1 GB # About 20% of total system memory
# Work Mem start low: 32-64MB... if system feels constrained then 
# look for temp files being created on disk to cover 
# work mem that goes above 64MB for queries.
work_mem = 64MB
# Maint work mem, used for things such as creating indexes
# may want to bump up if doing a lot of maintenance jobs on db creation
maintenance_work_mem = 1GB
# Always set wal buffers to 16 MB
wal_buffers = 16MB
# Set good values for checkpoints
checkpoint_segments = 32
checkpoint_timeout = 10min
checkpoint_completion_target = 0.9
# Give planner an idea of the impact of going to disk
# 3.0 for RAID 10, 2.0 for SAN, 1.1 for SSD
random_page_cost = 1.1
# Give the execution plans an idea of how much
# cache (RAM) is on the system
effective_cache_size = 2GB

Change Database Directory:

sudo su postgres
psql
postgres=# SHOW data_directory;
postgres=# \q

sudo service postgresql stop
cd /etc/postgresql/<<version>>/main
sudo nano postgresql.conf
          ### Change data_directory = '/usr/data/DB/main'
sudo mv /var/lib/postgresql/<<version>>/main /usr/data/DB
sudo service postgresql start

Config logging:

cd /etc/postgresql/<<version>>/main
sudo nano postgresql.conf
          ### Append to file
log_destination = 'csvlog'
log_directory = 'pg_log'
logging_collector = on
log_filename = 'postgres-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 1GB
log_min_duration_statement = 250ms
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_tmp_files = 0

Config data checksums:

cd /etc/postgresql-common
sudo nano sudo nano createcluster.conf
          ### Change
# Options to pass to initdb, checksums setting must be done before db creation.
initdb_options = '--data-checksums'

Restart to make changes take affect:

service postgresql restart

Another great resource: https://help.ubuntu.com/community/PostgreSQL