===== How to install PostgreSQL =====
==== Install ====
sudo apt install postgresql postgresql-contrib
==== Change superuser password ====
First of all you have to set a new password for the superuser ''postgres''. Note: superuser ''postgres'' does not have any password by default.
In order to set the password, type the following command line into your terminal:
sudo -u postgres psql postgres
Now you are in ''psql'', the command interface for postgresql, and in the database postgres.
In your terminal it looks like this:
$ postgres=#
To change your password:
$ \password postgres
... and type your new password when asked for it. Type ''\q'' and hit enter to quit.
==== Enable TCP connections ====
By default TCP/IP connections are disabled, so users are not able to remotely access PostgreSQL server from another computer. To enable it:
sudo vi /etc/postgresql/9.6/main/postgresql.conf
... and change ...
#listen_addresses = localhost
... to ...
listen_addresses = '*'
Note: this allows remote access only from this all IP addresses. If you want remote access from specific computers in your network use a comma separted list of addresses, like this:
''listen_addresses='addres1,addres2,localhost'''
Next, uncomment: \\
''#password_encryption = on'' \\
... to: \\
''password_encryption = on''
==== Edit pg_hba.conf ====
Client authentication is controlled by a configuration file, named [[https://www.postgresql.org/docs/devel/static/auth-pg-hba-conf.html|pg_hba.conf]]. For each client the ''auth-method'' must be specified.
sudo vi /etc/postgresql/9.6/main/pg_hba.conf
IPv4/IPv6 local connections are configured by default. Any other single IP client, like x,x,x,x SavaPage Server, must be added like this:
# Allow SavaPage Server
host savapage savapage x.x.x.x/32 md5
==== Restart ====
Changes made above need a restart:
sudo systemctl restart postgresql.service
==== Create Database ====
# As user 'postgres', create a new user 'savapage'
# -P indicates, that this user will have a password,
sudo -u postgres createuser -P savapage
# Enter password for new role:
# Enter it again:
sudo -u postgres createdb --owner=savapage savapage
==== How to use psql =====
The psql shell can be used to check which databases are present, or to execute SQL statements.
# start interactive shell
psql -h localhost -U postgres
-- list all databases.
postgres=# \l
-- list all user accounts.
postgres=# \du
# start interactive shell
psql -h localhost -U savapage savapage
-- enter sql statements (autocomplete is active)
postgres=# select * from tbl_printer;