5 Configuring PostgreSQL
These instructions assume you have a fresh installation of PostgreSQL 9.4. Later versions can be used, but these instructions will have to be modified accordingly.
5.1 Step 1: Initialize the database cluster and start the server
This may be done using the following commands:
sudo -s # become "root"
/usr/pgsql-9.4/bin/postgresql94-setup initdb
systemctl enable postgresql-9.4
systemctl start postgresql-9.4
exit # leave the root account
5.2 Step 2: Enable password authentication for all users other than postgres
As root or as user postgres
, open pg_hba.conf
(probably in /var/lib/pgsql/9.4/data
) for editing. Find the line for local domain socket connections:
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
Change “peer” to “md5”. Also, add a line for user postgres directly above this one to allow peer authentication. Your file should now look like this:
# TYPE DATABASE USER ADDRESS METHOD
local all postgres peer
local all all md5
Also, find the two lines for IPv4 and IPv6 local connections:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
In both lines, change “ident” to “md5”. (This seems to be needed to run the schema-spy documentation generator tool.) Save and close the file.
Now restart the PostgreSQL server so that the changes take effect:
sudo systemctl restart postgresql-9.4
5.3 Step 3: Create a new role and new database for BETYdb
By way of example, we’ll call the new role for BETYdb dbuser
and give it password dbpw
, and the BETYdb database will be called betydb
. (See the note on placeholder names in the beginning section of Deploying a Production Copy of the BETYdb Web Application.
Since user postgres
(the only database role so far) uses peer authenication, we have to become that user to log in to the database:
sudo su postgres
Now start a psql session:
psql
In the psql session, run the following commands to create the new user and new database and then exit the session:
CREATE ROLE dbuser WITH LOGIN CREATEDB NOSUPERUSER NOCREATEROLE PASSWORD 'dbpw';
CREATE DATABASE betydb WITH OWNER dbuser;
\q