2
votes

Amazon RDS - Le rôle Postgresql ne peut pas accéder aux tables

a créé une instance postgresql sur AWS avec le nom d'utilisateur ziggy. J'ai restauré une base de données sur cette instance. cependant je ne peux même pas sélectionner aucune des tables

GRANT USAGE ON SCHEMA public TO ziggy;

me donne ERREUR: permission refusée pour la relation mac_childcare_parcels ********** Erreur **********

le propriétaire de cette table appartient à la connexion postgres.

j'ai donc essayé d'exécuter ceci: accordez tous les privilèges sur toutes les tables du schéma public à ziggy mais comme je ne suis pas un super-utilisateur, je ne peux pas me donner de privilèges, ce qui génère une erreur d'autorisations. que dois-je faire pour accéder aux tables?

cela ne fonctionne pas non plus

accorde select sur mac_childcare_parcels à ziggy

cette requête retourne avec succès mais ne laisse pas la connexion ziggy accéder aux tables

select * FROM mac_childcare_parcels


3 commentaires

Vous n'obtiendrez pas une bonne réponse à moins que vous nous disiez exactement comment vous avez restauré la base de données (avec quel utilisateur de base de données). Aussi, vous devriez dire ce que \ dp mac_childcare_parcels vous donne dans psql .


j'ai utilisé pgadmin - j'ai pointé le fichier de sauvegarde et l'ai restauré sans toucher aux options


Ok, cela a besoin des informations suivantes: SELECT current_user, n.nspname, c.relacl, n.nspacl FROM pg_class AS c JOIN pg_namespace AS n ON c.relnamespace = n.oid WHERE relname = 'mac_childcare_parcels';


3 Réponses :


0
votes

Vous devez également GRANT USAGE sur le SCHEMA, par exemple

GRANT USAGE ON SCHEMA public TO ziggy;


1 commentaires

j'ai fait cette requête - qui est retournée avec succès mais je ne peux toujours pas sélectionner l'une des tables



2
votes

Commencez par vous connecter avec le super-utilisateur et fournissez tous les accès de super-utilisateur rds au nouvel utilisateur à l'aide d'une commande comme ci-dessous

GRANT rds_superuser TO ziggy;

remplacez rds_superuser par votre super-utilisateur rds. p>


0 commentaires

0
votes

L'accès superutilisateur est nécessaire pour exécuter les requêtes de niveau d'accès. Mais comme vous l'avez dit que l'accès n'est pas présent, je dirais alors de copier la réplique de la base de données que vous avez restaurée à partir de la sauvegarde et de vous accorder en tant que superutilisateur. puis fournissez tous les accès nécessaires à tous les utilisateurs.


1 commentaires

voulez-vous dire sur ma copie locale, créez un nom d'utilisateur ziggy et faites-en un super-utilisateur. le sauvegarder, puis le restaurer sur le serveur AWS?