Database permissions

In Firebolt, a database is a logical container that organizes your data warehouse by holding components such as tables, views, indexes, and other database objects. Database-level permissions define what actions roles can perform within a database and its associated objects.

Database-level privileges

Privilege Description GRANT Syntax REVOKE Syntax
USAGE Allows access to the database and enables attaching engines to it. GRANT USAGE ON DATABASE <database_name> TO <role>; REVOKE USAGE ON DATABASE <database_name> FROM <role>;
MODIFY Allows altering database properties and dropping the database. GRANT MODIFY ON DATABASE <database_name> TO <role>; REVOKE MODIFY ON DATABASE <database_name> FROM <role>;
USAGE ANY SCHEMA Allows access to all current and future schemas within the database. GRANT USAGE ANY SCHEMA ON DATABASE <database_name> TO <role>; REVOKE USAGE ANY SCHEMA ON DATABASE <database_name> FROM <role>;
VACUUM ANY Allows running the VACUUM operation on all current and future tables. GRANT VACUUM ANY ON DATABASE <database_name> TO <role>; REVOKE VACUUM ANY ON DATABASE <database_name> FROM <role>;

Examples of granting database permissions

USAGE permission

The following code example grants the role developer_role access to use the specified database:

GRANT USAGE ON DATABASE "database-1" TO developer_role;

MODIFY permission

The following code example gives the role developer_role permission to alter properties or drop the specified database:

GRANT MODIFY ON DATABASE "database-1" TO developer_role;

USAGE ANY SCHEMA permission

The following code example grants the role developer_role access to all current and future schemas within the specified database:

GRANT USAGE ANY SCHEMA ON DATABASE "database-1" TO developer_role;

VACUUM ANY permission

The following code example gives the role developer_role permission to run VACUUM operations on all current and future tables in the specified database:

GRANT VACUUM ANY ON DATABASE "database-1" TO developer_role;