What is the grant
option/trick I need to give to the current user («userA«) to allow him to change a object’s owner which belongs by another user («userC«)?
More precisely, the contact table is owned by the userC and when I perform the following query for changing the owner to the userB, connected with the userA:
alter table contact owner to userB;
I get this error:
ERROR: must be owner of relation contact
But userA has all needed rights to do that normally (the «create on schema» grant option should be enough):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Command line output:
root@server:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
Пытаюсь удалить только что созданный тригер и процедуру в Postgresql и выдает такую ошибку.
Пробовал следовать манам и сделать текущего пользователя владельцем базы, с которой работаю. Хотя он и так, вроде, был владельцем. тут написано как. Так же питался дать все права как сказано тут
SQL для удаления выглядит так:
DROP TRIGGER IF EXISTS update_params ON XXX CASCADE;
Помогите разобраться, в чем может быть дело?
What is the grant
option/trick I need to give to the current user («userA«) to allow him to change a object’s owner which belongs by another user («userC«)?
More precisely, the contact table is owned by the userC and when I perform the following query for changing the owner to the userB, connected with the userA:
alter table contact owner to userB;
I get this error:
ERROR: must be owner of relation contact
But userA has all needed rights to do that normally (the «create on schema» grant option should be enough):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Command line output:
root@server:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
Что такое grant
параметр/трюк, который мне нужно предоставить текущему пользователю ( «userA» ), чтобы он мог изменить владельца объекта, принадлежащего другому пользователю ( «userC» )?
Точнее, таблица контактов принадлежит пользователю C, и когда я выполняю следующий запрос для изменения владельца к пользователю B, связанному с userA:
alter table contact owner to userB;
Я получаю эту ошибку:
ERROR: must be owner of relation contact
Но у пользователяA все необходимые права для этого обычно (опция предоставления «create on schema» должна быть достаточной):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Thks
Выход командной строки:
[email protected]:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
Ответ 1
Благодаря комментарию Майка, я перечитал документ, и я понял, что мой текущий пользователь (ака. userA, который уже имеет привилегию создания) не был прямым/косвенным членом новой собственной роли…
Итак, решение было довольно простым, я только что сделал этот грант:
grant userB to userA;
Что все люди; -)
Update:
Другое требование состоит в том, что объект должен принадлежать пользователю userA перед его изменением…
Ответ 2
Из прекрасного руководства.
Вы должны владеть таблицей, чтобы использовать ALTER TABLE.
Или быть суперпользователем базы данных.
ОШИБКА: должен быть владельцем отношения
Сообщения об ошибках PostgreSQL обычно находятся на месте. Это одно место.
Какую опцию / трюк grant
мне нужно дать текущему пользователю (« userA «), чтобы он мог изменить владельца объекта, принадлежащего другому пользователю (« userC «)?
Точнее, таблица contact принадлежит userC , и когда я выполняю следующий запрос для смены владельца на userB , связанный с userA :
alter table contact owner to userB;
Я получаю такую ошибку:
ERROR: must be owner of relation contact
Но userA имеет все необходимые права, чтобы делать это в обычном режиме (параметра предоставления « create on schema » должно быть достаточно):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Спасибо
Вывод командной строки:
root@server:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
3 ответа
Лучший ответ
Благодаря комментарию Майка я перечитал документ и понял, что мой текущий пользователь (т.е. userA, у которого уже есть привилегия create ) не был прямым / косвенным членом новой роли владельца …
Итак, решение было довольно простым — я только что выполнил грант:
grant userB to userA;
Это все, ребята
Обновить:
Другое требование состоит в том, что объект должен принадлежать пользователю userA до его изменения …
107
Marcus Campbell
15 Мар 2019 в 19:03
Это решило мою проблему: пример оператора alter table для смены владельца.
ALTER TABLE databasechangelog OWNER TO arwin_ash;
ALTER TABLE databasechangeloglock OWNER TO arwin_ash;
9
Vivek
18 Янв 2020 в 20:40
Из прекрасного руководства.
Вы должны владеть таблицей, чтобы использовать ALTER TABLE.
Или станьте суперпользователем базы данных.
ОШИБКА: должно быть владельцем контакта
Сообщения об ошибках PostgreSQL обычно появляются точно. Это место на высоте.
16
Mike Sherrill ‘Cat Recall’
18 Фев 2015 в 13:44
Какую опцию / трюк grant
мне нужно дать текущему пользователю (« userA «), чтобы он мог изменить владельца объекта, принадлежащего другому пользователю (« userC «)?
Точнее, таблица contact принадлежит userC , и когда я выполняю следующий запрос для смены владельца на userB , связанный с userA :
alter table contact owner to userB;
Я получаю такую ошибку:
ERROR: must be owner of relation contact
Но userA имеет все необходимые права, чтобы делать это в обычном режиме (параметра предоставления « create on schema » должно быть достаточно):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Спасибо
Вывод командной строки:
root@server:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
3 ответа
Лучший ответ
Благодаря комментарию Майка я перечитал документ и понял, что мой текущий пользователь (т.е. userA, у которого уже есть привилегия create ) не был прямым / косвенным членом новой роли владельца …
Итак, решение было довольно простым — я только что выполнил грант:
grant userB to userA;
Это все, ребята
Обновить:
Другое требование состоит в том, что объект должен принадлежать пользователю userA до его изменения …
107
Marcus Campbell
15 Мар 2019 в 19:03
Это решило мою проблему: пример оператора alter table для смены владельца.
ALTER TABLE databasechangelog OWNER TO arwin_ash;
ALTER TABLE databasechangeloglock OWNER TO arwin_ash;
9
Vivek
18 Янв 2020 в 20:40
Из прекрасного руководства.
Вы должны владеть таблицей, чтобы использовать ALTER TABLE.
Или станьте суперпользователем базы данных.
ОШИБКА: должно быть владельцем контакта
Сообщения об ошибках PostgreSQL обычно появляются точно. Это место на высоте.
16
Mike Sherrill ‘Cat Recall’
18 Фев 2015 в 13:44
Что такое grant
параметр/трюк, который мне нужно предоставить текущему пользователю ( «userA» ), чтобы он мог изменить владельца объекта, принадлежащего другому пользователю ( «userC» )?
Точнее, таблица контактов принадлежит пользователю C, и когда я выполняю следующий запрос для изменения владельца к пользователю B, связанному с userA:
alter table contact owner to userB;
Я получаю эту ошибку:
ERROR: must be owner of relation contact
Но у пользователяA все необходимые права для этого обычно (опция предоставления «create on schema» должна быть достаточной):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Thks
Выход командной строки:
[email protected]:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
Ответ 1
Благодаря комментарию Майка, я перечитал документ, и я понял, что мой текущий пользователь (ака. userA, который уже имеет привилегию создания) не был прямым/косвенным членом новой собственной роли…
Итак, решение было довольно простым, я только что сделал этот грант:
grant userB to userA;
Что все люди; -)
Update:
Другое требование состоит в том, что объект должен принадлежать пользователю userA перед его изменением…
Ответ 2
Из прекрасного руководства.
Вы должны владеть таблицей, чтобы использовать ALTER TABLE.
Или быть суперпользователем базы данных.
ОШИБКА: должен быть владельцем отношения
Сообщения об ошибках PostgreSQL обычно находятся на месте. Это одно место.
What is the grant
option/trick I need to give to the current user («userA«) to allow him to change a object’s owner which belongs by another user («userC«)?
More precisely, the contact table is owned by the userC and when I perform the following query for changing the owner to the userB, connected with the userA:
alter table contact owner to userB;
I get this error:
ERROR: must be owner of relation contact
But userA has all needed rights to do that normally (the «create on schema» grant option should be enough):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Thks
Command line output:
root@server:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
What is the grant
option/trick I need to give to the current user («userA«) to allow him to change a object’s owner which belongs by another user («userC«)?
More precisely, the contact table is owned by the userC and when I perform the following query for changing the owner to the userB, connected with the userA:
alter table contact owner to userB;
I get this error:
ERROR: must be owner of relation contact
But userA has all needed rights to do that normally (the «create on schema» grant option should be enough):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Thks
Command line output:
root@server:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
I have using rails application with PostgreSql database.
My application is working fine with PostgreSql.
I want to run my migration on server, I run a command RAILS_ENV=production rake db:migrate
then I get following error:
PGError:Error: must be owner of
relation table_name
I don’t understand why this error occurs?
Please suggest any solution to resolve this error.
Thanks!
asked Nov 30, 2010 at 10:21
You want to change something in the table, but you don’t have the permissions to do so. Only the owner of the table can do so.
Use a different database role, the owners role, and you’re fine.
answered Nov 30, 2010 at 10:24
Frank HeikensFrank Heikens
113k24 gold badges137 silver badges132 bronze badges
2
I have using rails application with PostgreSql database.
My application is working fine with PostgreSql.
I want to run my migration on server, I run a command RAILS_ENV=production rake db:migrate
then I get following error:
PGError:Error: must be owner of
relation table_name
I don’t understand why this error occurs?
Please suggest any solution to resolve this error.
Thanks!
asked Nov 30, 2010 at 10:21
You want to change something in the table, but you don’t have the permissions to do so. Only the owner of the table can do so.
Use a different database role, the owners role, and you’re fine.
answered Nov 30, 2010 at 10:24
Frank HeikensFrank Heikens
113k24 gold badges137 silver badges132 bronze badges
2
Какой вариант / трюк grant
мне нужно дать текущему пользователю (» userA «), чтобы он мог изменить владельца объекта, принадлежащего другому пользователю (» userC «)?
Точнее, таблица контактов принадлежит пользователю C, и когда я выполняю следующий запрос для изменения владельца на пользователя B , связанного с пользователем A :
alter table contact owner to userB;
Я получаю такую ошибку:
ERROR: must be owner of relation contact
Но у пользователя userA есть все необходимые права, чтобы делать это в обычном режиме (опции предоставления » create on schema » должно быть достаточно):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Спасибо
Вывод командной строки:
[email protected]:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
Что такое grant
параметр/трюк, который мне нужно предоставить текущему пользователю ( «userA» ), чтобы он мог изменить владельца объекта, принадлежащего другому пользователю ( «userC» )?
Точнее, таблица контактов принадлежит пользователю C, и когда я выполняю следующий запрос для изменения владельца к пользователю B, связанному с userA:
alter table contact owner to userB;
Я получаю эту ошибку:
ERROR: must be owner of relation contact
Но у пользователяA все необходимые права для этого обычно (опция предоставления «create on schema» должна быть достаточной):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Thks
Выход командной строки:
root@server:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
Я внес некоторые изменения на сайт в локальной версии, нажал модели на сервер и сделал makemigrations
(revampenv) [email protected]:~/revamp$ python manage.py makemigrations gallery
Migrations for 'gallery':
0032_auto_20170829_0058.py:
- Create model Area
- Create model Color
- Create model ThumbnailCache
- Add field unique_key_string to image
- Alter field example on image
- Alter field timeline on image
работал отлично, тогда я попытался мигрировать, и я получаю эту ошибку
(revampenv) [email protected]:~/revamp$ python manage.py migrate
Operations to perform:
Apply all migrations: account, sessions, admin, auth, thumbnail, contenttypes, gallery
Running migrations:
Rendering model states... DONE
Applying gallery.0032_auto_20170829_0058...Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 200, in handle
executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/migrations/executor.py", line 92, in migrate
self._migrate_all_forwards(plan, full_plan, fake=fake, fake_initial=fake_initial)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/migrations/executor.py", line 121, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/migrations/executor.py", line 198, in apply_migration
state = migration.apply(state, schema_editor)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/migrations/migration.py", line 123, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/migrations/operations/fields.py", line 62, in database_forwards
field,
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/backends/postgresql/schema.py", line 21, in add_field
super(DatabaseSchemaEditor, self).add_field(model, field)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 396, in add_field
self.execute(sql, params)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 110, in execute
cursor.execute(sql, params)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/utils.py", line 95, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/home/sammy/revamp/revampenv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: must be owner of relation gallery_image
У меня была эта или аналогичная ошибка раньше, когда база данных db имела дубликат ниже для локального env, но это не так.
(примечание) это также не подходит для других моделей
(revampenv) [email protected]:~/revamp$ python manage.py makemigrations account
Migrations for 'account':
0003_userprofile_bio.py:
- Add field bio to userprofile
(revampenv) [email protected]:~/revamp$ python manage.py migrate
...
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: must be owner of relation account_userprofile
Обновление попыталось изменить владельца базы данных
postgres=# ALTER DATABASE color_db OWNER TO revamp;
ALTER DATABASE
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'color_db',
'USER': 'revamp',
'PASSWORD': 'xxx',
'HOST': 'localhost',
'PORT': '',
}
}
но он все равно возвращает ту же ошибку
(revampenv) [email protected]:~/revamp$ python manage.py migrate
...
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: must be owner of relation account_userprofile
18-го февраля 2015 в 1:19
8 просмотров
Вопрос
: Ошибке " СУБД PostgreSQL;вы должны быть владельцем отношение» при изменении владельца объекта
Что такое «даром» вариант/трюк я должен дать текущему пользователю (на»userA-то»), чтобы позволить ему изменить объект’с рук, которые принадлежат другим пользователем (на»userC-то»)?
Точнее, таблица contact принадлежит userC и когда я выполнить следующий запрос на изменение владельца в userB, связанных с userA:
alter table contact owner to userB;
Я получаю эту ошибку:
ERROR: must be owner of relation contact
Но userA имеет все необходимые права, чтобы сделать это нормально (в «create на schema и» вариант гранта должно быть достаточно):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Спасибо
<ч/>
Вывода командной строки:
[email protected]:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
51
2015-02-18T13:19:41+00:00
2
Решение / Ответ
18-го февраля 2015 в 2:40
2015-02-18T14:40:13+00:00
#26817989
Спасибо Майк’ы комментарий, Я’вэ перечитайте DOC и я’вэ понял, что мой текущий пользователь (т. е. пользователь а что уже create привилегия) Это’т direct/косвенные членом нового владельца файла role…
Поэтому решение было достаточно простым — Я’вэ просто сделали этот грант:
Что’s все люди
<ч />
Обновление:
Еще одно требование заключается в том, что объект должен быть собственностью userA пользователей, прежде чем менять его…
Ответ на вопрос
18-го февраля 2015 в 1:44
2015-02-18T13:44:15+00:00
#26817988
От документацию.
вы должны быть владельцем таблицы, чтобы использовать Alter таблицы.
Или быть суперпользователем базы данных.
ошибка: должен быть владельцем связи контакт
Сообщения об ошибке в PostgreSQL, как правило, точны. Это пятно на.
Похожие сообщества
9
Чат русскоязычного сообщества PostgreSQL, здесь мы обсуждаем технические вопросы, для поиска работы и предложения вакансий есть группа https://t.me/pgsqljobs
For English discussion visit https://t.me/pg_sql
Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д.
См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru
Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.
Обязательны: компания, город, позиция, вилка, наличие удалёнки, требования, контакты. Бан за рекламу, сексизм, расизм и неадекватный обсёр объявлений
Чат про базы данных, их устройство и приемы работы с ними. Разрешаются любые адеватные дискуссии в рамках тематики чата.
Here we discuss PostGIS. По-русски and in English. h3_pg, pgrouting are welcome too.
https://t.me/ruosm — группа про OpenStreetMap
Что такое grant
параметр/трюк, который мне нужно предоставить текущему пользователю ( «userA» ), чтобы он мог изменить владельца объекта, принадлежащего другому пользователю ( «userC» )?
Точнее, таблица контактов принадлежит пользователю C, и когда я выполняю следующий запрос для изменения владельца к пользователю B, связанному с userA:
alter table contact owner to userB;
Я получаю эту ошибку:
ERROR: must be owner of relation contact
Но у пользователяA все необходимые права для этого обычно (опция предоставления «create on schema» должна быть достаточной):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Thks
Выход командной строки:
[email protected]:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
Ответ 1
Благодаря комментарию Майка, я перечитал документ, и я понял, что мой текущий пользователь (ака. userA, который уже имеет привилегию создания) не был прямым/косвенным членом новой собственной роли…
Итак, решение было довольно простым, я только что сделал этот грант:
grant userB to userA;
Что все люди; -)
Update:
Другое требование состоит в том, что объект должен принадлежать пользователю userA перед его изменением…
Ответ 2
Из прекрасного руководства.
Вы должны владеть таблицей, чтобы использовать ALTER TABLE.
Или быть суперпользователем базы данных.
ОШИБКА: должен быть владельцем отношения
Сообщения об ошибках PostgreSQL обычно находятся на месте. Это одно место.
Какую опцию / трюк grant
мне нужно дать текущему пользователю (« userA «), чтобы он мог изменить владельца объекта, принадлежащего другому пользователю (« userC «)?
Точнее, таблица contact принадлежит userC , и когда я выполняю следующий запрос для смены владельца на userB , связанный с userA :
alter table contact owner to userB;
Я получаю такую ошибку:
ERROR: must be owner of relation contact
Но userA имеет все необходимые права, чтобы делать это в обычном режиме (параметра предоставления « create on schema » должно быть достаточно):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Спасибо
Вывод командной строки:
root@server:~# psql -U userA myDatabase
myDataBase=>dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
3 ответа
Лучший ответ
Благодаря комментарию Майка я перечитал документ и понял, что мой текущий пользователь (т.е. userA, у которого уже есть привилегия create ) не был прямым / косвенным членом новой роли владельца …
Итак, решение было довольно простым — я только что выполнил грант:
grant userB to userA;
Это все, ребята
Обновить:
Другое требование состоит в том, что объект должен принадлежать пользователю userA до его изменения …
107
Marcus Campbell
15 Мар 2019 в 19:03
Это решило мою проблему: пример оператора alter table для смены владельца.
ALTER TABLE databasechangelog OWNER TO arwin_ash;
ALTER TABLE databasechangeloglock OWNER TO arwin_ash;
9
Vivek
18 Янв 2020 в 20:40
Из прекрасного руководства.
Вы должны владеть таблицей, чтобы использовать ALTER TABLE.
Или станьте суперпользователем базы данных.
ОШИБКА: должно быть владельцем контакта
Сообщения об ошибках PostgreSQL обычно появляются точно. Это место на высоте.
16
Mike Sherrill ‘Cat Recall’
18 Фев 2015 в 13:44