PostgreSQL

De OpenWikiBSD
Aller à : navigation, rechercher

Installation

pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/5.2/packages/i386/postgresql-server          
mkdir -p /var/postgresql
su - _postgresql
mkdir /var/postgresql/data
initdb -D /var/postgresql/data -U posqtgresADM -A md5 -W

=>Mdp

postgres -D /var/postgresql/data &
echo "
#Demarrage PostgreSQL
su - _postgresql /usr/local/bin/postgres -D /var/postgresql/data
" >> /etc/rc.local

Fichiers de conf

  • Rep /var/postgresql
  • Fichier /var/postgresql/data/pg_hba.conf


Usage, création des bdd

  • Création BDD
/usr/local/bin/createdb -U user -h localhost BDD

Password: 
CREATE DATABASE
  • Création structure BDD
/usr/local/bin/psql -U user -h localhost -d BDD -f ./install.sql


  • Accéder aux BDD
/usr/local/bin/psql -U user -h localhost -d BDD

Gestion des utilisateurs

  • Ajout des utilisateurs
/usr/local/bin/createuser -U posqtgresADM -h localhost -d New_User -P
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Password: 
CREATE ROLE

Ou bien

postgres=# CREATE USER monUser WITH PASSWORD 'SonPassword';


  • Qui sont-ils ?
 postgres=# SELECT * from pg_shadow ;
   usename   | usesysid | usecreatedb | usesuper | usecatupd |               passwd                | valuntil | useconfig 
-------------+----------+-------------+----------+-----------+-------------------------------------+----------+-----------
 toto        |    19875 | t           | f        | f         |                                     |          | 
 postgreSQL  |       10 | t           | t        | t         | md57689mpj651a699eeca624309gdukht8d |          | 
 (2 rows)
  • Changer le mot de passe de XYZ
postgres=# ALTER USER user WITH PASSWORD 'PASSWORD';
ALTER ROLE
  • Changer les droits de XYZ sur la base ABC
USER=# grant all on OBJET to USER;
GRANT


Important. Il n'est pas possible d'augmenter les privilèges sur une base, mais sur des objets seulement.

Exemple , si vous utilisez l'excellent Studs

 studs=# \d
                  List of relations
 Schema |          Name           |   Type   | Owner 
--------+-------------------------+----------+-------
 public | comments                | table    | toto
 public | comments_id_comment_seq | sequence | toto
 public | sondage                 | table    | toto
 public | sujet_studs             | table    | toto
 public | user_studs              | table    | toto
 public | user_studs_id_users_seq | sequence | toto
(6 rows)

Pour donner les droits à titi, il faudra faire :

grant all on  XXXX to  titi;

sur chacun des objets Name.

Commandes PostgreSQL

  • Se connecter :
su postgre
psql
  • Commandes internes
\h : help
\q : sortir de psql
\l : Liste les BDD
\? : Liste les commandes dispos
\s : Historique
\d : Décrit la structure de la base actuelle
\d table : Décrit la structure de la table
\c BDD : Changer de BDD
\du : Affiche les rôles


show data_directory; : Donne le lieu de stockage des BDD dans le Filesystem (Faut être admin)


Si le prompt est : mabase> ,vous êtes utilisateur

Si le prompt est : mabase# ,vous êtes super-utilisateur

  • Supprimer une Bdd
\c postgres
drop database MABASE;
  • Supprimer un user
\c postgres
drop user MONUSER;
  • Créer une BDD en CLI
 createdb -U postgres --encoding=UNICODE  -T template0 --owner=USER BDD
  • Créer un user en CLI
 createuser -U postgres --pwprompt --encrypted --no-adduser --no-createdb USER

Debug

  • PGSQL est sensible à la casse uniquement avec des guillemets :
ALTER USER Toto WITH PASSWORD 'PASS';
ERROR:  role "toto" does not exist

échoue, mais

ALTER USER "Toto" WITH PASSWORD 'PASS';
ALTER ROLE

fonctionne

Administration mode ouebe

pkg_add phpPgAdmin
cd /var/www/htdocs
ln -s ../phpPgAdmin /var/www/htdocs/ssl/phpPgAdmin