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
|
# 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*.
|
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 :
|
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).
|
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
|
## pgpass
|
||||||
|
|
||||||
Pour se connecter plus facilement à postgresql (avec `psql` mais aussi `pgdump` etc), on peut utiliser le fichier `~/.pgpass` avec comme format :
|
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*.
|
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 :
|
* Se conmecter avec un utilisateur à une base psql en local :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
postgres:~$ psql -h 127.0.0.1 -U USER -W -d DB
|
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 :
|
* Suppression d'une base de données :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
$ dropdb <base>
|
$ 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) :
|
* Sélectionner une base de données (l'équivalent de *use* dans le monde MySQL) :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
|
@ -415,18 +443,6 @@ ou encore :
|
||||||
=# \d+ <table>
|
=# \d+ <table>
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
* Lister les utilisateurs (aussi appelés rôles) :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
=# SELECT * FROM pg_user;
|
|
||||||
~~~
|
|
||||||
|
|
||||||
ou :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
=# \du
|
|
||||||
~~~
|
|
||||||
|
|
||||||
* Lister les indexes :
|
* Lister les indexes :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
|
|
Loading…
Reference in a new issue