1. Configurer le dépôt officiel
rpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
2. Installer les paquets nécessaires
yum install postgresql93 postgresql93-server postgresql93-contrib --enablerepo=postgresql93
3. Créer le fichier de paramètres
Sous Centos, il est possible de créer un fichier dans /etc/sysconfig/pgsql/
- /etc/sysconfig/pgsql/postgresql-9.3:
PGDATA="/srv/postgresql/"
PGPORT="5432"
PG_INITDB_OPTS="--locale=en_US.UTF8"
4. Initialisaton de l'instance
/etc/init.d/postgresql-9.3 initdb
Ne pas oublier d'activer PostgreSQL au démarrage de la machine :
chkconfig postgresql-9.3 on
5. Création d'une base avec l'utilisateur associé
su - postgres
/usr/pgsql-9.3/bin/createdb mabase
/usr/pgsql-9.3/bin/createuser -l monuser -W
# Entrer le mot de passe utilisateur
Il faut ensuite attribuer les droits à l'utilisateur sur la base. Ici nous allons le rendre propriétaire de la base.
psql
ALTER DATABASE mabase OWNER TO monuser;
6. Droits d'accès aux différents bases
Le fichier pg_hba.conf se trouve dans le répertoire $PGDATA. Il permet de déterminer qui peut se connecter à tel ou tel base et quelle méthode d'authentification il doit utiliser.
http://www.postgresql.org/docs/9.3/static/auth-pg-hba-conf.html
Le fichier par défaut que j'utilise est le suivant :
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host mabase monuser 127.0.0.1/32 md5
# IPv6 local connections:
host mabase monuser ::1/128 md5
Ici, les connexions via le socket local sont autorisées sans mot de passe à condition que l'utilisateur Unix soit le même que l'utilisateur de connexion à PostgreSQL.
Les connexions à la base mabase avec l'utilisateur monuser sont autorisées à partir de la boucle locale en ipv4 et en ipv6 avec la saisie d'un mot de passe. Le client doit envoyer le mot de passe en MD5
Dernière étape
Il faut penser à recharger la configuration afin de prendre en compte la modification du fichier pg_hba.conf
/etc/init.d/postgresql-9.3 reload