Изменить таблицу другого пользователя в Firebird - PullRequest
5 голосов
/ 11 февраля 2012

Когда я пытаюсь изменить таблицу от другого владельца в Firebird, я получаю эту ошибку:

unsuccessful metadata update
MODIFY RDB$RELATION_FIELDS failed
no permission for control access to TABLE TAGS

Я уже предоставил ВСЕ привилегии этому пользователю, также привилегии ССЫЛКИ, но я все еще получаю эту ошибку.

Кто-нибудь знает, как это решить?

Я использую Firebird 1.5

Спасибо

1 Ответ

9 голосов
/ 11 февраля 2012

Справочник по языку Interbase 6.0 (доступен на http://www.firebirdsql.org/en/reference-manuals/) для ALTER TABLE состояний:

Таблица может быть изменена ее создателем, пользователем SYSDBA и любыми пользователями с привилегиями суперпользователя операционной системы.

Другими словами, если вы не являетесь владельцем таблицы, вам необходимо либо войти в систему как SYSDBA, либо вы должны войти в систему как root или Adminstrator на компьютере с базой данных. Насколько я знаю, нет другого способа изменить таблицу от имени другого пользователя.

В Firebird 2.5 также есть роль RDB$ADMIN, которая позволяет пользователю, которому предоставлена ​​эта роль, действовать с теми же правами, что и SYSDBA.

Права, которые вы можете GRANT (кроме REFERENCES), предназначены только для DML, но не для операций DDL.

В Firebird 3 введены привилегии метаданных , что позволяет предоставлять эти разрешения конкретному пользователю роли для определенных типов объектов.

Например:

GRANT ALTER ANY TABLE TO Joe;

Позволит пользователю Joe изменять любые таблицы в текущей базе данных.

...