Ajout nuance utilisateur read-only / droit création table

This commit is contained in:
whirigoyen 2024-03-29 18:00:58 +01:00
parent 81cdd6902d
commit 097c74619f

View file

@ -322,21 +322,32 @@ postgres=# CREATE DATABASE <database> OWNER <user>;
~~~
$ su - postgres
$ apg -n1 -m15
$ createuser -P $user
$ createuser -P $user_ro
~~~
Puis, ajouter les droits :
~~~
$ psql -d <database>
=# GRANT CONNECT ON DATABASE <database> TO <user>;
=# GRANT CONNECT ON DATABASE <database> TO <user_ro>;
=# 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>;
=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user_ro>;
=# ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO <user_ro>;
~~~
*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é.
**Attention :** Par défaut, tout utilisateur peut créer des tables sur le schéma public d'une base.
Si on veut être sûr que l'utilisateur en lecture seule ne créera pas de table (par exemple [Metabase](https://wiki.evolix.org/HowtoMetabase), qui prend parfois certaines libertés), il faut l'interdire pour tout le monde, puis l'autoriser au cas par cas :
~~~
$ psql -d <database>
=# REVOKE ALL ON schema public FROM public;
=# GRANT ALL ON schema public TO <db_adm_user>;
~~~
### Changer le mot de passe d'un utilisateur
~~~