Изменить OWNER для всех таблиц одновременно в PostgreSQL

Wamp-сервер и Tomcat работают на одном компьютере без какой-либо ошибки конфигурации или какой-либо другой ошибки. Так что просто продолжайте и установите Tomcat для jsp-файлов, если вы установили Wamp для других целей веб-дизайна. Я сам сделал то же самое, и он работает непрерывно.

378
задан newUserNameHere 5 February 2014 в 19:54
поделиться

3 ответа

См. REASSIGN OWNED команда

Примечание: Как @trygvis упоминает в ответе ниже команда REASSIGN OWNED доступна, по крайней мере, с версии 8.2, и это гораздо более простой метод.


Поскольку вы меняете владельца для всех таблиц, вам, вероятно, тоже понадобятся представления и последовательности. Вот что я сделал:

Таблицы:

for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" YOUR_DB` ; do  psql -c "alter table \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done

Последовательности:

for tbl in `psql -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" YOUR_DB` ; do  psql -c "alter sequence \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done

Просмотры:

for tbl in `psql -qAt -c "select table_name from information_schema.views where table_schema = 'public';" YOUR_DB` ; do  psql -c "alter view \"$tbl\" owner to NEW_OWNER" YOUR_DB ; done

Вы могли бы, вероятно, DRY это немного увеличить, поскольку операторы alter идентичны для всех трех.


435
ответ дан 22 November 2019 в 23:51
поделиться

В PostgreSQL такой команды нет. Но вы можете обойти это, используя метод, который я описал некоторое время назад для GRANT.

6
ответ дан 22 November 2019 в 23:51
поделиться

Недавно мне пришлось изменить владельца всех объектов в базе данных. Хотя таблицы, представления, триггеры и последовательности можно было легко изменить, вышеупомянутый подход не удался для функций, поскольку подпись является частью имени функции. Конечно, у меня есть опыт работы с MySQL и я плохо знаком с Postgres.

Однако pg_dump позволяет вам выгружать только схему, которая содержит необходимые вам операторы ALTER xxx OWNER TO yyy; . Вот моя небольшая магия оболочки по теме

pg_dump -s YOUR_DB | grep -i 'owner to' | sed -e 's/OWNER TO .*;/OWNER TO NEW_OWNER;/i' | psqL YOUR_DB
20
ответ дан 22 November 2019 в 23:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: