Sie sind auf Seite 1von 5

L'utilisateur postgres

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

Vous devriez obtenir quelque chose comme :


psql (9.1.5) Type "help" for help. postgres=#

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

Connexion en tant qu'utilisateur postgres


sudo -i -u postgres psql -l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ----------+----------+-----------+---------+------+----------------------postgres | postgres | SQL_ASCII | C | C | template0 | postgres | SQL_ASCII | C | C | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | SQL_ASCII | C | C | =c/postgres + | | | | | postgres=CTc/postgres

supprimer le cluster et le recrer

Identifier la version et le nom de votre cluster


pg_lsclusters
Version Cluster Port Status Owner Data directory Log file 9.1 main 5432 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log

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 |

Crer un utilisateur PostgreSQL


Mthode rapide, non scurise (-> privilgier la mthode dcrite dans le chapitre suivant)
postgres est psql ce que root est Ubuntu. Il ne faut l'utiliser que pour les tches

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

La ligne de commande est devenue :


nom_base_de_donnee=>

Notez la transformation du # en > : vous n'tes plus superutilisateur

Pour aller plus loin


Mthode alternative pour crer un utilisateur Vous pouvez aussi crer vos utilisateurs directement en ligne de commande, depuis le terminal standard, mais en tant connect en tant que postgres, bien sr. Cette mthode est beaucoup plus sre que la prcdente. Tous les utilisateurs auront des mots de passe chiffrs. (Ce qui n'est pas le cas lorsque l'on emploie la mthode prcdente) Il faut d'abord modifier le fichier de configuration pour autoriser les connexions via mot de passe chiffr :
sudo nano /etc/postgresql/x.x/main/pg_hba.conf

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 ...

md5 md5 md5

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

On peut ensuite crer notre utilisateur :


$ sudo -i -u postgres $ createuser -P <nom_utilisateur> Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) y

Puis, on lui cre une base de donnes ddie :


$ createdb -O <nom_utilisateur> -E UTF8 <ma_database>

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> :

Das könnte Ihnen auch gefallen