privileges. (This is current practice, not a requirement. That is, components could, but do not, unregister at any time privileges they register.) 

No warning or error occurs for attempts to register an already registered dynamic privilege. Consider the following sequence of statements: 

INSTALL COMPONENT ’my_component’; UNINSTALL COMPONENT ’my_component’; INSTALL COMPONENT ’my_component’; 

The first INSTALL COMPONENT  statement registers any privileges defined by component my_component , but UNINSTALL COMPONENT  does not unregister them. For the second INSTALL COMPONENT  statement, the component privileges it registers are found to be already registered, but no warnings or errors occur. 

Dynamic privileges apply only at the global level. The server stores information about current assignments of dynamic privileges to user accounts in the mysql.global_grants  system table: 

•The server automatically registers privileges named in global_grants  during server startup (unless the --skip-grant-tables  option is given). 

•The GRANT  and REVOKE  statements modify the contents of global_grants . 

•Dynamic privilege assignments listed in global_grants  are persistent. They are not removed at server shutdown. 

Example: The following statement grants to user u1  the privileges required to control replication (including Group Replication) on a replica, and to modify system variables: 

GRANT REPLICATION_SLAVE_ADMIN, GROUP_REPLICATION_ADMIN, BINLOG_ADMIN ON *.* TO ’u1’@’localhost’; 

Granted dynamic privileges appear in the output from the SHOW GRANTS  statement and the INFORMATION_SCHEMA USER_PRIVILEGES  table. 

For GRANT  and REVOKE  at the global level, any named privileges not recognized as static are checked against the current set of registered dynamic privileges and granted if found. Otherwise, an error occurs to indicate an unknown privilege identifier. 

For GRANT  and REVOKE  the meaning of ALL [PRIVILEGES]  at the global level includes all static global privileges, as well as all currently registered dynamic privileges: 

• GRANT ALL  at the global level grants all static global privileges and all currently registered dynamic privileges. A dynamic privilege registered subsequent to execution of the GRANT  statement is not granted retroactively to any account. 

• REVOKE ALL  at the global level revokes all granted static global privileges and all granted dynamic privileges. 

The FLUSH PRIVILEGES  statement reads the global_grants  table for dynamic privilege assignments and registers any unregistered privileges found there. 

For descriptions of the dynamic privileges provided by MySQL Server and components included in MySQL distributions, see Section 6.2.2, “Privileges Provided by MySQL” . 

## Migrating Accounts from SUPER to Dynamic Privileges 

In MySQL 8.0, many operations that previously required the SUPER  privilege are also associated with a dynamic privilege of more limited scope. (For descriptions of these privileges, see Section 6.2.2, “Privileges 

