Je voudrais donner à un utilisateur toutes les autorisations sur une base de données sans en faire un administrateur. La raison pour laquelle je veux le faire est que pour le moment DEV et PROD sont des bases de données différentes sur le même cluster, donc je ne veux pas qu'un utilisateur puisse changer les objets de production mais il doit pouvoir changer les objets sur DEV.
J'ai essayé:
grant ALL on database MY_DB to group MY_GROUP;
mais cela ne semble donner aucune permission.
J'ai ensuite essayé:
grant all privileges on schema MY_SCHEMA to group MY_GROUP;
et il semble me donner la permission de créer des objets mais pas d'interroger \ supprimer des objets sur ce schéma qui appartiennent à d'autres utilisateurs
Je pourrais continuer en accordant l'autorisation USAGE à l'utilisateur sur MY_SCHEMA, mais il se plaindrait de ne pas avoir d'autorisations sur la table ...
Donc je suppose que ma question est: existe-t-il un moyen facile de donner toutes les autorisations à un utilisateur sur une base de données?
Je travaille sur PostgreSQL 8.1.23.
la source
ON DATABASE
semble puissant, mais cela ne fait pas grand-chose. Ce n'est qu'un début. Il n'accorde aucun privilège sur les objets contenus.Dans PostgreSQL 9.0+, vous procéderiez comme suit:
Si vous souhaitez également l'activer pour les relations nouvellement créées, définissez les autorisations par défaut:
Cependant, vu que vous utilisez 8.1, vous devez le coder vous-même:
Cela définira les privilèges sur toutes les relations: tables, vues, index, séquences, etc. Si vous souhaitez restreindre cela, filtrez
pg_class.relkind
. Voir les documents pg_class pour plus de détails.Vous devez exécuter cette fonction en tant que superutilisateur et aussi régulièrement que l'exige votre application. Une option serait de l'empaqueter dans une tâche cron qui s'exécute tous les jours ou toutes les heures.
la source
J'ai fait ce qui suit pour ajouter un rôle «eSumit» sur la base de données PostgreSQL 9.4.15 et fournir toutes les autorisations à ce rôle:
Également vérifié les entrées pg_table via:
sélectionnez * parmi pg_roles;
Instantané des requêtes de base de données:
la source