247 votes

Comment changer le propriétaire d'une base de données PostgreSql ?

Je dois changer le propriétaire de la base de données PostgreSql.

Comment changer le propriétaire d'une base de données PostgreSql dans phppgadmin ?

435voto

Frank Heikens Points 29270
ALTER DATABASE name OWNER TO new_owner;

Ver l'entrée du manuel Postgresql à ce sujet pour plus de détails.

4 votes

Pour être complet, voici la partie du manuel qui documente cela : postgresql.org/docs/current/static/sql-alterdatabase.html

17 votes

@mArtinko5MB : C'est impossible, ALTER ne supprime pas une base de données.

0 votes

@FrankHeikens Dites-le, c'est probablement dû au fait que cette table n'était pas vide. Ainsi, après chaque modification de cette table, la table a été abandonnée (en particulier avec la permission de modifier les données personnelles). Merci pour la réponse

63voto

Antwane Points 7923

La réponse de Frank Heikens ne mettra à jour que la propriété de la base de données. Souvent, vous souhaitez également mettre à jour la propriété des objets contenus (y compris les tables). À partir de Postgres 8.2, REASSIGNEZ-VOUS est disponible pour simplifier cette tâche.

MODIFICATION IMPORTANTE !

Ne jamais utiliser REASSIGN OWNED lorsque le rôle original est postgres cela pourrait endommager l'ensemble de votre instance DB. La commande mettra à jour tous les objets avec un nouveau propriétaire, y compris les ressources système (postgres0, postgres1, etc.).


Tout d'abord, connectez-vous à la base de données admin et mettez à jour la propriété de la BD :

psql
postgres=# REASSIGN OWNED BY old_name TO new_name;

Il s'agit d'un équivalent global de ALTER DATABASE fournie dans la réponse de Frank, mais au lieu de mettre à jour une BD particulière, elle change la propriété de toutes les BD appartenant à 'old_name'.

L'étape suivante consiste à mettre à jour la propriété des tables pour chaque base de données :

psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;

Cette opération doit être effectuée sur chaque BD appartenant à 'old_name'. La commande mettra à jour la propriété de toutes les tables de la BD.

14 votes

Joli ! ...à moins que le propriétaire soit postgres lui-même... J'ai appris ça à la dure.

3 votes

Le problème est qu'il ne change pas le propriétaire d'une seule base de données, mais il remplace le propriétaire partout par le nouveau.

1 votes

Le REASSIGN OWNED ci-dessus va changer toutes les bases de données (s'il y a plusieurs bases de données) dans une même instance pour le nouveau rôle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X