ALTER ROUTINE Privilege
This page is part of MariaDB's Documentation.
The parent of this page is: Privileges for MariaDB Xpand
Topics on this page:
Overview
Grants ability to execute ALTER FUNCTION
, ALTER PROCEDURE
, DROP FUNCTION
, and DROP PROCEDURE
.
DETAILS
Scope: Global, Database, Routine
Privilege name for
GRANT
:ALTER ROUTINE
Privilege name for
REVOKE
:ALTER ROUTINE
Privilege shown by
SHOW GRANTS
:ALTER ROUTINE
MariaDB Xpand's ALTER ROUTINE
privilege allows certain SQL statements to be executed:
EXAMPLES
GRANT
The following examples demonstrate grant of a single privilege. A single GRANT
statement can grant multiple privileges at the same scope by providing a comma-separated list of the privileges.
To grant the ALTER ROUTINE
privilege at global scope, replace the user specification ('USERNAME'@'HOSTNAME'
) in the following query to align to your requirements:
GRANT ALTER ROUTINE
ON *.*
TO 'USERNAME'@'HOSTNAME';
To grant the ALTER ROUTINE
privilege at database scope, replace the user specification ('USERNAME'@'HOSTNAME'
) and database name (DATABASE_NAME
) in the following query to align to your requirements:
GRANT ALTER ROUTINE
ON DATABASE_NAME.*
TO 'USERNAME'@'HOSTNAME';
To grant the ALTER ROUTINE
privilege at routine scope, replace the user specification ('USERNAME'@'HOSTNAME'
), database name (DATABASE_NAME
), and routine name (ROUTINE_NAME
) in the following query to align to your requirements:
GRANT ALTER ROUTINE
ON DATABASE_NAME.ROUTINE_NAME
TO 'USERNAME'@'HOSTNAME';
REVOKE
The following examples demonstrate revoke of a single previously-granted privilege. A single REVOKE
statement can revoke multiple privileges at the same scope by providing a comma-separated list of the privileges.
To revoke the ALTER ROUTINE
privilege at global scope, replace the user specification ('USERNAME'@'HOSTNAME'
) in the following query to align to your requirements:
REVOKE ALTER ROUTINE
ON *.*
FROM 'USERNAME'@'HOSTNAME';
To revoke the ALTER ROUTINE
privilege at database scope, replace the user specification ('USERNAME'@'HOSTNAME'
) and database name (DATABASE_NAME
) in the following query to align to your requirements:
REVOKE ALTER ROUTINE
ON DATABASE_NAME.*
FROM 'USERNAME'@'HOSTNAME';
To revoke the ALTER ROUTINE
privilege at routine scope, replace the user specification ('USERNAME'@'HOSTNAME'
), database name (DATABASE_NAME
), and routine name (ROUTINE_NAME
) in the following query to align to your requirements:
REVOKE ALTER ROUTINE
ON DATABASE_NAME.ROUTINE_NAME
FROM 'USERNAME'@'HOSTNAME';
SHOW Output
A user's privileges can be displayed using the SHOW GRANTS
statement.
If the ALTER ROUTINE
privilege is present, it will be shown as ALTER ROUTINE
in the output. For example:
SHOW GRANTS FOR 'app_user'@'192.0.2.%';
+-------------------------------------------------------------+
| Grants for app_user@192.0.2.% |
+-------------------------------------------------------------+
| GRANT ALTER ROUTINE ON `app_db`.* TO 'app_user'@'192.0.2.%' |
+-------------------------------------------------------------+
Privilege Failure
An error message is raised if an operation fails due to insufficient privileges. For example:
CREATE DATABASE db1;
DELIMITER //
CREATE PROCEDURE db1.test_proc ()
BEGIN
SELECT 1;
END//
DELIMITER ;
DROP PROCEDURE db1.test_proc;
ERROR 1045 (HY000): [11281] Permission denied: User 'USERNAME'@'HOSTNAME' is missing ALTER ROUTINE on `db1`.*; transaction aborted