Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alter Table Of Other User in Firebird

When I try to alter a table from a different owner in Firebird I got this error:

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

I had already granted ALL privileges to this user, also REFERENCES privileges, but I still getting this error.

Does anybody knows how to solve this?

I use Firebird 1.5

Thanks

like image 462
Douglas Lise Avatar asked Feb 10 '12 23:02

Douglas Lise


1 Answers

The Firebird 2.5 Language Reference section on ALTER TABLE states:

Only the table owner and administrators have the authority to use ALTER TABLE.

In other words if you are not the owner of the table, you need to either login as SYSDBA, or you need to be logged in as root or Adminstrator on the machine with the database. There is - as far as I am aware - no other way to alter a table as a different user.

In Firebird 2.5 there is also the RDB$ADMIN role which allows a user which is granted this role to act with the same rights as SYSDBA.

The rights you can GRANT (except for REFERENCES) are only for DML, not for DDL operations.

Firebird 3 introduced metadata privileges, which allows you to grant these permissions to a specific user or role for specific object types.

For example:

GRANT ALTER ANY TABLE TO Joe;

Will allow the user Joe to alter any tables in the current database.

like image 136
Mark Rotteveel Avatar answered Sep 27 '22 15:09

Mark Rotteveel