Як змінити власника бази даних PostgreSql?


205

Мені потрібно змінити власника бази даних PostgreSql.

Як змінити власника бази даних PostgreSql у phppgadmin?

Відповіді:


345
ALTER DATABASE name OWNER TO new_owner;

Докладнішу інформацію див . У статті посібника Postgresql щодо цього .


3
Для повноти тут наведена частина посібника, яка документує це: postgresql.org/docs/current/static/sql-alterdatabase.html
a_horse_with_no_name

17
@ mArtinko5MB: Це неможливо, ALTER не скидає базу даних.
Френк Хайкенс

17
@ mArtinko5MB: Також неможливо, ALTER TABLE не збиває таблицю. Покажіть нам свій SQL, у ваших заявах щось погано порушено.
Френк Хайкенс

18
Зауважте, всі таблиці та послідовності всередині бази даних все одно будуть призначені первинному власнику.
Серін

2
ERROR: must be member of role ...= НЕ працює з RDS
StartupGuy

49

Відповідь Франка Хайкенса буде лише оновити право власності на базу даних. Часто також потрібно оновити право власності на об'єкти, що містяться (включаючи таблиці). Починаючи з Postgres 8.2, для спрощення цього завдання доступний REASSIGN OWNED .

ВАЖЛИВО ЗМІСТ!

Ніколи не використовуйте REASSIGN OWNEDколи оригінальну роль postgres, це може пошкодити весь екземпляр БД. Команда оновить усі об'єкти з новим власником, включаючи системні ресурси (postgres0, postgres1 тощо)


Спочатку підключіться до бази даних адміністратора та оновіть право власності на БД:

psql
postgres=# REASSIGN OWNED BY old_name TO new_name;

Це глобальний еквівалент ALTER DATABASEкоманди, наданий у відповіді Франка, але замість оновлення конкретної БД вона змінює право власності на всі БД, що належать "old_name".

Наступним кроком є ​​оновлення права власності на таблиці для кожної бази даних:

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

Це потрібно виконати для кожної БД, що належить 'old_name'. Команда оновить право власності на всі таблиці в БД.


7
Приємно! ... якщо тільки власник не є postgresсам ... Навчився цього важкого шляху.
Кріс

1
Проблема полягає в тому, що він не змінює власника єдиної бази даних, а замінює власника скрізь новою.
Michael003

Вищезгаданий ВЛАСНИЙ ВЛАСНИЙ змінить всю базу даних (якщо є кілька баз даних) в одному і тому ж екземплярі на нову роль.
varun7447

Альтернативу REASSIGN OWNED(як правило, тому що ваш власник postgres) див. Фрагменти в stackoverflow.com/a/2686185/1839209 .
Майкл Геррман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.