Comment empêcher la créations de table par les utilsateurs ?
Comment empêcher la créations de table par les utilsateurs ?
Tu devras se documenter un peu sur les roles et les privilèges qu'on peut donner à chaque utilisateur d'une base de données. (Cours d'administration d'une BD).
privilèges : select, insert, update, delete, ALL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 grant privileges on objet to utilisateur; --donner des droits grant insert,update on membre to bibi27; --exemple revoke privileges on objet to utilisateur; --enlever des droits revoke delete on membre to kiki; --exemple
objet : une ou plusieurs relations (ou vues)
utilisateur : un nom d'utilisateur, ou PUBLIC
Trés intéressant, biensur! la documention !![]()
Suis-je bête !
Et peut-être que je dois chercher aussi un peu sur Google...
Tiens j'ai une meilleur idée : et si je poster sur un forum...
J'ai pas été claire peut-être, désolé.
Merci bricecol.
Mais mon probléme est que je voudrais que les utilisateurs ne puissent pas créer de tables sur la base de données, qui se nomme postgres.
J'ai tester le code suivant :
Ensuite je me logue en tant que 'lecteur' et je crée une table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 create user lecteur with password 'lecteur'; revoke create on database postgres from lecteur;
Et la table se crée, ce que je ne veux pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part create table test...
Comprens pas...![]()
D'après ce que j'ai compris tu as donc plusieurs bases dont une postgres. Alors, je ne vois pas le problème. Comment un utilisateur pourrait-il créer une table dans la base postgres si tu utilise une autre. Il n'y a pas de lien entre les bases.
Si j'ai rien compris, expliques moi mieux stp![]()
Non j'ai bien une seul base... je me suis mal exprimé.
Mais ça y est j'ai résolu mon problème!
En fait il faut supprimer le droit CREATE du schema avec la commande suivante :
Ainsi tout les utilisateurs ne pourront plus créer des tables. (excepté ceux à qui on a donné le droit).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 revoke create on SCHEMA public from public;
l'utilisateur postgres est le superutilisateur, utilisateur à ne pas alterer sous peine d'avoir une base PostgreSQL inutilisable.
il faut d'abord crée un role (avec LOGIN) sinon l'utilisateur ne pourra pas s'y connecter et ensuite lui affectué ses droits.
Partager