Accorder des privilèges pour un particulier de base de données PostgreSQL

Je me déplace à partir de MySQL à PostgreSQL et ont frappé un mur avec des privilèges d'utilisateur. Je suis habitué à l'affectation d'un utilisateur tous les privilèges de toutes les tables d'une base de données avec la commande suivante:

# MySQL
grant all privileges on mydatabase.* to 'myuser'@'localhost' identified by 'mypassword';

Il me semble que le PostgreSQL 9.x solution consiste à affecter des privilèges à un "schéma", mais l'effort exigé de moi de comprendre exactement ce que SQL à la question s'avère excessif. Je sais que quelques heures de recherche donnera une réponse, mais je pense que tout le monde se déplaçant à partir de MySQL à PostgreSQL pourrait bénéficier d'au moins une page sur le web qui fournit une manière simple et complète de la recette. C'est la seule commande que j'ai jamais nécessaire de problème pour les utilisateurs. Je préfère ne pas avoir à émettre une commande pour chaque nouveau tableau.

Je ne sais pas ce que les scénarios doivent être traitées différemment dans PostgreSQL, donc je vais la liste de certains des scénarios que j'ai généralement eu à gérer dans le passé. Supposons que nous ne signifie modifier les privilèges d'une base de données unique qui a déjà été créé.

(1a) Pas toutes les tables ont été créées, ou (1b) les tableaux ont déjà été créés.

(2a), L'utilisateur n'a pas encore été créé, ou (2b) l'utilisateur a déjà été créé.

(3a) les Privilèges n'ont pas encore été affectés à l'utilisateur, ou (3b) les privilèges ont été précédemment attribué à l'utilisateur.

(4a) L'utilisateur a seulement besoin d'insérer, mettre à jour, de sélectionner et de supprimer des lignes, ou (4b) l'utilisateur doit également être en mesure de créer et de supprimer des tables.

J'ai vu des réponses qui accorder tous les privilèges de toutes les bases de données, mais ce n'est pas ce que je veux ici. S'il vous plaît, je suis à la recherche d'une recette simple, bien que je ne me dérangerait pas une explication.

Je ne veux pas d'accorder des droits à tous les utilisateurs et toutes les bases de données, comme cela semble être le conventionnel raccourci, parce que l'approche des compromis de toutes les bases de données lorsqu'un utilisateur est compromis. Je l'hôte de plusieurs bases de données clients et d'attribuer à chaque client une connexion différente.

Il semble que j'ai aussi besoin de la USAGE privilège d'obtenir l'augmentation des valeurs d'un serial colonne, mais je dois accorder sur une sorte de séquence. Mon problème a plus de complexe.

Je soupçonne que la complexité des privilèges de l'utilisateur de PostgresQL peut être un obstacle important à une adoption plus large.
La page suivante s'affiche pour accorder à un utilisateur des droits nécessaires pour toutes les tables de toutes les bases de données, alors que je veux seulement accorder des droits à une base de données unique. dba.stackexchange.com/questions/36870/...

OriginalL'auteur Joe Lapp | 2014-07-23