Wiki World

PostgreSQL

Login: standard access only on local socks connection

sudo -u postgres psql

Login with user

psql <dbname> <user>

Create new user

CREATE ROLE <user>;

Create new user who can login and has a password of ‘password’

CREATE ROLE <user> WITH LOGIN PASSWORD 'password';

Enable user to login (if forgotten when creating user)

ALTER ROLE "<user>" WITH LOGIN;

Set password on user

ALTER ROLE "<user>" WITH ENCRYPTED PASSWORD '<password>';

Create a database

createdb <dbname>

or

CREATE DATABASE <dbname>;

Drop database

DROP DATABASE <dbname>;

Add user to database

grant all privileges on database <dbname> to <username>

Create a table

CREATE TABLE <tbname> (
    id SERIAL,
    title TEXT
    );

Other commands

commanddescription
\?show help
\llist databases
\qquit postgres client (psql)
\c [dbname]change active database
\c [dbname] [username]change active database and user
\ddescribe current database (list tables)
\d [table]describe table
\d+ [table]describe table with extra information
\dulist of roles
\du+list of roles with description
\dtshow tables

Disable local login without password Edit config file /etc/postgresql/9.5/main/pg_hba.conf (location may differ depending on distro)

(type)  (db)  (user)  (address)    (method)
 local   all    all                  md5
 host    all    all    127.0.0.1/32  md5

Maybe the following would be better though. Here the default user still has peer access but all others must supply a password.

(type)  (db)  (user)  (address)     (method)
 local   all   postgres              peer
 local   all   all                   md5
 host    all   all     127.0.0.1/32  md5