Navigating User Management in MySQL 8: A Comprehensive Guide to Utilizing Roles for Enhanced Security and Simplified Privilege Control

Exploring Roles in MySQL 8: A New Dimension in User Management and Security

MySQL 8 introduced several innovative features, and one such notable addition is the implementation of “Roles” in user management and security. Roles simplify the process of managing privileges by allowing administrators to associate privileges with a role and then grant that role to a user. Let’s delve deeper into the new facets of roles in MySQL 8.

1. Creation and Assignment of Roles:

  • Role Creation:In MySQL 8, you can create a role using the CREATE ROLE statement, and assign privileges to it using the GRANT statement.

CREATE ROLE ‘app_reader’;
GRANT SELECT ON app_db.* TO ‘app_reader’;

  • Role Assignment to Users:
    • Assign a role to a user using GRANT followed by the TO clause

GRANT ‘app_reader’ TO ‘user1’@’localhost’;


The SET ROLE statement is used to activate one or more roles for the current session. This specifies which of the granted roles to use.

SET ROLE ‘app_reader’;

The above SQL activates the app_reader role for the current session.

3. Role Defaults and NONE:

  • DEFAULT ROLE:Assigning a default role means the user gets the role’s privileges upon connecting, without needing a SET ROLE statement.

SET DEFAULT ROLE ‘app_reader’ TO ‘user1’@’localhost’;

4. Role Hierarchies:

Roles can be granted to other roles, creating a hierarchy. This means you can encapsulate the privileges of several roles within a superior role.

CREATE ROLE ‘app_admin’;
GRANT ‘app_reader’ TO ‘app_admin’;

In this scenario, app_admin inherits the privileges of app_reader.

5. Managing Roles:

  • Show Roles:
    You can list all available roles using:

SELECT * FROM information_schema.applicable_roles;

6. Password Handling:

Roles, unlike users, do not have authentication (password) attributes, as they are not used for logging into the MySQL server. Roles are essentially a collection of privileges that can be assigned to users.

7. Graphical User Interface:

MySQL Workbench 8+ supports role management in its user interface, allowing for creating, dropping, and assigning roles without using SQL queries.

8. Locked & Unlocked Roles:

Roles can be locked or unlocked. A locked role is a role that has been created but is inactive and cannot be granted to any user.


MySQL 8 brings forth a robust, hierarchy-based role management system that simplifies user privilege management, ensuring more secure and manageable user access control. It significantly eases the process of managing privileges for database administrators, especially in larger or more complex database environments, thus promoting a more streamlined and structured approach towards database security and management.

About Shiv Iyer 452 Articles
Open Source Database Systems Engineer with a deep understanding of Optimizer Internals, Performance Engineering, Scalability and Data SRE. Shiv currently is the Founder, Investor, Board Member and CEO of multiple Database Systems Infrastructure Operations companies in the Transaction Processing Computing and ColumnStores ecosystem. He is also a frequent speaker in open source software conferences globally.