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:
parent
5b10d3976d
commit
12878f186d
|
@ -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 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`.
|
||||
|
||||
|
||||
### 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 :
|
||||
|
||||
~~~
|
||||
|
|
Loading…
Reference in New Issue