22
0
Fork 0

Déplacement des instructions de gestion des utilisateurs dans des sous-sections dédiées de "Gestion des utilisateurs et permissions"

This commit is contained in:
whirigoyen 2022-02-28 16:02:34 +01:00
parent 5b10d3976d
commit 12878f186d
1 changed files with 73 additions and 57 deletions

View File

@ -227,6 +227,7 @@ On peut remarquer que toute l'arborescence est organisée en fonction des versio
# Gestion des utilisateurs et permissions
PostgreSQL permet de lier un utilisateur Unix à un utilisateur PostgreSQL. C'est le cas pour l'utilisateur *postgres* (superadmin PostgreSQL), qui est lié à l'utilisateur Unix *postgres*.
Ainsi pour passer superadmin PostgreSQL :
~~~
@ -255,6 +256,78 @@ Bien s'assurer que les utilisateurs PostgreSQL ont un mot de passe de défini av
Pour plus de détails on pourra consulter la [documentation](https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html).
## Lister les utilisateurs (ou rôles)
~~~
$ su - postgres
$ psql
=# SELECT * FROM pg_user;
~~~
On peut utiliser aussi la commande courte PostgreSQL `\du`.
## Créer un utilisateur et une base de données
Note : Par défaut la base sera créée avec lencodage du système. Si le système est en UTF-8 par défaut, la base créée sera en UTF-8. On peut spécifier un encodage alternatif avec loption `-E`.
### Créer un utilisateur et une base de données liés à un compte Unix
~~~
$ su - postgres
$ createuser <user>
$ createdb <user>
~~~
### Créer un utilisateur et une base de données (non-liés à un compte Unix)
~~~
$ su - postgres
$ apg -n1 -m15
$ createuser -P <user>
$ createdb -O <user> <database>
~~~
### Créer un utilisateur avec des droits en lecture seule sur une ou plusieurs bases
~~~
$ su - postgres
$ apg -n1 -m15
$ createuser -P $user
~~~
Puis, ajouter les droits :
~~~
$ psql -d <database>
=# GRANT CONNECT ON DATABASE <database> TO <user>;
=# GRANT USAGE ON SCHEMA public TO <user>;
=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user>;
=# ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO <user>;
~~~
Note : Le schéma `public` est celui par défaut à la création de la base, si aucun schéma n'a été spécifié.
## Changer le mot de passe d'un utilisateur
~~~
$ su - postgres
$ psql -c "ALTER USER <login> WITH PASSWORD '<pass>'"
~~~
## Supprimer un utilisateur
~~~
$ su - postgres
$ dropuser <login>
~~~
## pgpass
Pour se connecter plus facilement à postgresql (avec `psql` mais aussi `pgdump` etc), on peut utiliser le fichier `~/.pgpass` avec comme format :
@ -328,63 +401,18 @@ UPDATE pg_settings SET setting = 5000 WHERE name = 'log_min_duration_statement';
Toutes les commandes d'administration doivent être exécutées depuis l'utilisateur Unix *postgres*.
* Création d'un utilisateur avec un mot de passe :
~~~
$ createuser -P <login>
~~~
* Création d'une base de données, en définissant l'utilisateur précédemment créé comme propriétaire de la base :
~~~
$ createdb -O <login> <base>
~~~
Comme pour les instances, par défaut la base sera créée avec l'encodage du système. Si le système est en UTF-8 par défaut, la base créée sera en UTF-8. On peut spécifier un encodage alternatif avec l'option `-E`.
* Se conmecter avec un utilisateur à une base psql en local :
~~~
postgres:~$ psql -h 127.0.0.1 -U USER -W -d DB
~~~
* Création d'un utilisateur en lecture seule sur une ou plusieurs bases :
Il faut tout d'abord créer l'utilisateur comme ceci :
~~~
$ createuser -P <user>
~~~
Il faut ensuite ajuster les droits pour cet utilisateur sur la ou les bases :
**On prend exemple sur la base postgres, mais il faudra vous connecter sur la base concerné avec `psql -d <database>` avec l'user unix postgres**
~~~
postgres=# GRANT CONNECT ON DATABASE <database> TO <user>;
postgres=# GRANT USAGE ON SCHEMA public TO <user>;
postgres=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user>;
postgres=# ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO <user>;
~~~
* Suppression d'une base de données :
~~~
$ dropdb <base>
~~~
* Mise à jour du mot de passe d'un utilisateur :
~~~
$ psql -c "ALTER USER <login> WITH PASSWORD 'foo'"
~~~
* Suppression d'un utilisateur :
~~~
$ dropuser <login>
~~~
* Sélectionner une base de données (l'équivalent de *use* dans le monde MySQL) :
~~~
@ -415,18 +443,6 @@ ou encore :
=# \d+ <table>
~~~
* Lister les utilisateurs (aussi appelés rôles) :
~~~
=# SELECT * FROM pg_user;
~~~
ou :
~~~
=# \du
~~~
* Lister les indexes :
~~~