Test d'installation d'une base de données PostgreSQL

PostgreSQL est un système de gestion de base de données relationnelle et objet (SGBDRO), considéré par beaucoup comme le SGDB Open Source de référence.

Une fois installée sur un nouveau système il est bon de réaliser un petit test avant d’y importer ses données.

Groupe/Utilisateur

Le service ne doit pas tourner avec les droits root, il est préférable de créer un utilisateur et un groupe dédiés. Sur un système Slackware, il est conseillé d’utiliser ceci :

postgresql
==========
User:   postgres    UID: 209    GID: 209
Group:  postgres                GID: 209

Voici un petit script qui vérifiera si tout est ok et/ou vous créera tout ça (script fourni dans le paquet Salix).

#!/bin/sh
if [ $(id -u) -ne 0 ]; then
echo "you must be root"
exit 1
fi
. /etc/postgresd.conf
grep -q "^$PGGROUP:" /etc/group
if [ $? -ne 0 ]; then
groupadd -g 209 $PGGROUP
fi
grep -q "^$PGUSER:" /etc/passwd
if [ $? -ne 0 ]; then
useradd -u 209 -d $PGHOME -m -k /dev/null -g $PGGROUP $PGUSER
fi
chmod u=rwx,go= $PGHOME
su - $PGUSER -c "initdb -D $PGDB"

Comme vous le voyez, il se base sur /etc/postgresd.conf :

#!/bin/sh

PGUSER=postgres
PGGROUP=postgres
PGHOME=/var/lib/postgres
PGDB=$PGHOME/db
PGLOG=/var/log/postgres.log
PGPID=$PGHOME/postmaster.pid

Test

Passez root :

su -

Puis, création d’une base de donnée test, d’une table t1, insertion de données et affichage :

su - postgres -c '/usr/bin/createdb test' &&
echo "create table t1 ( name varchar(20), state_province varchar(20) );" | (su - postgres -c '/usr/bin/psql test ') &&
echo "insert into t1 values ('Billy', 'NewYork');" | (su - postgres -c '/usr/bin/psql test ') &&
echo "insert into t1 values ('Evanidus', 'Quebec');" | (su - postgres -c '/usr/bin/psql test ') &&
echo "insert into t1 values ('Jesse', 'Ontario');" | (su - postgres -c '/usr/bin/psql test ') &&
echo "select * from t1;" | (su - postgres -c '/usr/bin/psql test')

Si tout va bien, vous obtiendrez ceci :

CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
name      | state_province
----------+----------------
Billy     | NewYork
Evanidus  | Quebec
Jesse     | Ontario
(3 rows)

Quelques liens