Beruflich Dokumente
Kultur Dokumente
PostgreSQL est un serveur qui permet de se connecter diffrentes bases de donnes. Par dfaut, seul l'utilisateur postgres peut se connecter. Toutes les oprations d'administration se font, au dpart, avec l'utilisateur postgres. la fin de l'installation, celui-ci ne possde pas de mot de passe : c'est un utilisateur bloqu et le mieux est qu'il le reste. La premire chose faire sera de crer un nouvel utilisateur, mais pour ce faire, il faut se connecter au moins une fois en tant qu'utilisateur postgres. Pour devenir postgres et faire les oprations d'administration qui suivent, utilisez sudo :
$ sudo -i -u postgres Password:
exit permettra, la fin de cette session d'administration dans PostgreSQL, de reprendre la main en tant qu'utilisateur du systme. Il se peut que cette authentification retourne une erreur lie au fait qu'il est impossible pour postgres de lire, par exemple, le fichier ~/.bashrc (si un terminal bash est utilis). La commande chmod ug+r ~/.bashrc excute avant la connexion postgres rglera ce problme. Dsormais, l'invite de commande doit mentionner que vous tes actif en tant que postgres. Pour lancer l'outil d'administration de PostgreSQL, tapez simplement :
psql
Notez que vous avez une interface en ligne de commande, et que vous tes connect en tant que "root", comme l'indique le # en bout de ligne. Cette ligne de commande sera bien sr utilise pour excuter des requtes SQL, et aussi des commandes internes postgreSQL (elles commencent toutes par un antislash) Petit guide de survie pour le client psql
\h \? \g \q pour l'aide-mmoire des commandes SQL pour l'aide-mmoire des commandes psql ou point-virgule en fin d'instruction pour excuter la requte pour quitter
encodage UTF-8
Ce paragraphe est optionnel En version PostgreSQL 9.1.5, l'installateur semble avoir directement cr avec le bon codage. Cette opration semble donc tre devenue inutile. L'installateur initialise le cluster postgresql avec le support de jeux de caractres SQL_ASCII Pour ceux qui souhaitent privilgier l'encodage UTF-8 / locale FR-fr, il faut supprimer le cluster et le recrer. jeux de caractres par dfaut
Supprimer le cluster
pg_dropcluster 9.1 main --stop
Crer le cluster
pg_createcluster 9.1 main
Dmarrage
pg_ctlcluster 9.1 main start Les bases systmes seront alors conformes aux locales systme
psql -l Name | Owner Ctype | Access privileges ----------+----------+----------+-------------+------------+----------------------postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres List of databases | Encoding | Collate |
d'administration, en aucun cas s'en servir pour un applicatif, sinon vous allez crer une faille de scurit. Par facilit, nous allons assimiler les utilisateurs du systme ceux qui se connecteront avec psql, mais ce n'est nullement obligatoire. Par la suite, nous supposerons que votre login systme est nom_utilisateur. Commencez par crer un nouvel utilisateur, qui portera par exemple le mme nom que vous. Dans la ligne de commande ci-dessous, tapez (rappel : la partie postgres=# est l'invite de commande, il ne faut pas la retaper ! Ainsi, la commande ci-dessous requiert de taper CREATE USER <nom_utilisateur>; , en remplaant <nom_utilisateur> par un identifiant bien choisi) :
postgres=# CREATE USER <nom_utilisateur>;
N'oubliez pas le point-virgule la fin Par dfaut, votre nouvel utilisateur n'a aucun droit. Donnez-lui la possibilit de crer de nouvelles bases de donnes :
postgres=# ALTER ROLE <nom_utilisateur> WITH CREATEDB;
Ensuite, crez une base de donnes pour votre utilisateur. Par exemple, vous pouvez prendre comme nom : nom_utilisateur. Ainsi, la connexion sera automatique.
si une base de donnes possde le mme nom que l'utilisateur avec lequel on se connecte alors le client psqlse connecte par dfaut cette base.
postgres=# CREATE DATABASE <nom_base_de_donnee> OWNER <nom_utilisateur>;
Attribuer un mot de passe l'utilisateur pour qu'il puisse se connecter la base (le ENCRYPTED permet l'utilisation de md5 dans le pg_hba.conf) :
postgres=# ALTER USER <nom_utilisateur> WITH ENCRYPTED PASSWORD 'mon_mot_de_passe';
Vous pouvez maintenant quitter, "redevenir vous-mme" et relancer psql directement, en tant cette fois connect sous votre propre nom :
postgres=# \q postgres@ubuntu:~$ exit nom_utilisateur@ubuntu:~$ psql nom_base_de_donnee
Remplacez "x.x" par le numro de version de PostgreSQl installe sur votre ordinateur (exemple : 9.1). Les utilisateurs "avancs" noteront que le fichier est amplement comment. Voir la documentation pour plus d'informations. Si vous modifiez les paramtres de la scurit, avant de relancer postgresql pensez donner un mot de passe l'utilisateur postgres (voir plus bas) Modifier le fichier en remplaant ident sameuser par md5 afin d'obtenir les lignes suivantes :
... # Database administrative login by Unix domain socket local all postgres
peer
# TYPE
DATABASE
USER
ADDRESS
METHOD
# "local" is for Unix domain socket connections only local all all # IPv4 local connections: host all all 127.0.0.1/32 # IPv6 local connections: host all all ::1/128 ...
La modification des paramtres de connexion au serveur ncessite son redmarrage pour que ces derniers soient pris en compte.
$ sudo /etc/init.d/postgresql restart
ou
$ sudo pg_ctlcluster 9.1 main restart
Si vous avez recr le groupe de bases de de donnes (cluster) avec les locales UTF8, il ne sera pas ncessaire de prciser l'option -E UTF8 car la base modle par dfaut (template1) prsente dj cet encodage L'option -O <nom_utilisateur> est l pour prciser l'identit du propritaire de la base <ma_database>. Ensuite, on peut se connecter via :
$ psql -U <nom_utilisateur> Mot de passe pour l'utilisateur <nom_utilisateur> :
ou, si le nom de la base de l'utilisateur n'est pas le mme que celui de l'utilisateur :
$ psql -U <nom_utilisateur> <nom_database_de_l_utilisateur> Mot de passe pour l'utilisateur <nom_utilisateur> :