[Postgresql] : Appliquer un GRANT à toutes les séquences d’une base

Print Friendly, PDF & Email

Vous utilisez postgresql, cet article est pour vous ? Encore une fois rien de bien compliqué mais de l’élémentaire et efficace. Si vous faites souvent des imports de base sans reprendre tous les GRANT (droits) qui vont bien, vous vous retrouvez à faire des ALTER sur les tables pour redonner les bons droits aux bons users (utilisateurs).

Mais pour les séquences ça peut se compliquer car vous n’avez pas de possibilité de faire cela en masse comme on peut faire un “GRANT ALL ON ALL TABLES”. Du coup on va quand même pas se palucher les droits à la main non ? et pis quoi encore lol.

Bon les DBA postgresql le savent il suffit de faire une petite boucle qui va bien comme ceci :
echo "select sequence_name FROM information_schema.sequences" | psql --cluster 9.4/main -d madatabase | grep -v '('|awk '{print "GRANT ALL ON TABLE madatabase."$1" TO monuser;"}' > maj_grant_monuser.sql

Pas trop compliqué :

  • On liste les séquences de la base
  • on vire la ligne vide
  • on édite une line GRANT sur la séquence
  • on ajoute cette ligne dans un fichier sql

Il vous reste ensuite à lancer ce script et le tour est joué. Dans mon cas, j’ai indiqué –cluster pour le cas où on a plusieurs cluster sur la machine sinon viré l’option et l’argument.

box business celebrate celebration

Photo by rawpixel.com on Pexels.com

 

Découvrez  [SQL] : créez des constantes et des noms de résultats