MySQL - SET ROLE Statement

A Role is a named set of privileges, you can specify the active ones among the granted roles of the current MySQL user using the SET ROLE Statement.
Following is the syntax of the MySQL SET ROLE Statement −
SET ROLE {
   DEFAULT
   | NONE
   | ALL
   | ALL EXCEPT role_name1, role_name2, role_name3 . . . . .
   | role_name1, role_name2, role_name3 . . . . .
}

you can just specify the role(s) to be activated. If you want to activate multiple roles separate them with commas.
Assume we have created a role using CREATE statements as −
mysql> CREATE ROLE 'TestRole';
Query OK, 0 rows affected (0.09 sec)
Now, let’s grant read only privilege to the created role using the GRANT statement as −
mysql> GRANT SELECT ON * . * TO 'TestRole';
Query OK, 0 rows affected (0.16 sec)
Then, you can GRANT the created role to the user as follows −
mysql> GRANT 'TestRole' TO CURRENT_USER;
Query OK, 0 rows affected (0.03 sec)
Following query activates the 'TestRole' role −
mysql> SET ROLE 'TestRole';
Query OK, 0 rows affected (0.00 sec)
You can use different role specifiers with this statement they are discussed below −
You can set a role as default using the SET DEFAULT ROLE. Statement. If you set any role as default to a particular MYSQL user, soon you connect to server with as this user, the role that is set as default is assigned to the user. During the session if you execute SET ROLE DEFAULT statement the default role is set to the current user.
You can activate all the roles that are marked as default, using the SET ROLE DEFAULT statement.
Assume we have created a role using CREATE statements as −
mysql> CREATE ROLE 'TestRole_ReadOnly';
Query OK, 0 rows affected (0.13 sec)
Now, let’s grant read only privilege to the created role using the GRANT statement as −
mysql> GRANT SELECT ON * . * TO 'TestRole_ReadOnly';
Query OK, 0 rows affected (0.14 sec)
Then, you can GRANT the created role to the user as follows −
mysql> GRANT 'TestRole_ReadOnly' TO CURRENT_USER;
Query OK, 0 rows affected (0.10 sec)
Following query sets the above created role 'TestRole_ReadOnly' as the default role to the above created user −
mysql> SET DEFAULT ROLE 'TestRole_ReadOnly' TO 'root'@'localhost';
Query OK, 0 rows affected (0.19 sec)
Now, you can activate the default role as −
SET ROLE DEFAULT;
If you set active roles to none, all the roles granted to the current user are deactivated. Following statement sets the active roles to none −
SET ROLE NONE;
If you set active roles to ALL, all the roles granted to the current user are activated. Following statement sets activates all the roles granted to the current user −
SET ROLE ALL;
You can activate only selected roles using this specifier. You need to specify the roles that should be deactivated separated by commas.
Assume we have created multiple roles as shown below −
mysql> CREATE ROLE 'MyAdmin', 'MyDeveloper', 'demouser';
Query OK, 0 rows affected (0.21 sec)
Let us grant privileges to these users −
mysql> GRANT ALL ON * . * TO 'MyAdmin';
Query OK, 0 rows affected (0.15 sec)
mysql> GRANT INSERT, UPDATE ON * . * TO 'MyDeveloper';
Query OK, 0 rows affected (0.21 sec)
mysql> GRANT SELECT ON * . * TO 'demouser';
Query OK, 0 rows affected (0.14 sec)
Following query activates all roles except 'MyAdmin −
mysql> SET ROLE ALL EXCEPT 'MyAdmin';
Query OK, 0 rows affected (0.00 sec)

    31 Lectures 
     6 hours 

 Eduonix Learning Solutions

    84 Lectures 
     5.5 hours 

 Frahaan Hussain

    6 Lectures 
     3.5 hours 

 DATAhill Solutions Srinivas Reddy

    60 Lectures 
     10 hours 

 Vijay Kumar Parvatha Reddy

    10 Lectures 
     1 hours 

 Harshit Srivastava

    25 Lectures 
     4 hours 

 Trevoir Williams
 Print
 Add Notes
 Bookmark this page