diff --git a/HowtoPostgreSQL.md b/HowtoPostgreSQL.md index aff12f4e..56cd6295 100644 --- a/HowtoPostgreSQL.md +++ b/HowtoPostgreSQL.md @@ -322,21 +322,32 @@ postgres=# CREATE DATABASE OWNER ; ~~~ $ su - postgres $ apg -n1 -m15 -$ createuser -P $user +$ createuser -P $user_ro ~~~ Puis, ajouter les droits : ~~~ $ psql -d -=# GRANT CONNECT ON DATABASE TO ; +=# GRANT CONNECT ON DATABASE TO ; =# GRANT USAGE ON SCHEMA public TO ; -=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO ; -=# ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO ; +=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO ; +=# ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO ; ~~~ *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 +=# REVOKE ALL ON schema public FROM public; +=# GRANT ALL ON schema public TO ; +~~~ + + ### Changer le mot de passe d'un utilisateur ~~~