WL#14303: More granular privilege control of the FLUSH operations

Affects: Server-8.0   —   Status: Complete

Provide separate privilege(s) to allow customers to execute the following 
statements:

    FLUSH OPTIMIZER_COSTS
    FLUSH STATUS
    FLUSH USER_RESOURCES
    FLUSH TABLES

Without the need for the RELOAD privilege.
FR2: FLUSH OPTIMIZER_COSTS will be allowed if the new dynamic FLUSH_OPTIMIZER_COSTS privilege is granted
FR3: FLUSH STATUS will be allowed if the new dynamic FLUSH_STATUS privilege is granted
FR4: FLUSH USER_RESOURCES will be allowed if the new dynamic FLUSH_USER_RESOURCES is granted
FR5: FLUSH TABLES will be allowed if the new dynamic FLUSH_TABLES privilege is granted.
FR6: RELOAD privilege will continue to allow all of the above operations it currently does for backward compatibility.
FR7: At upgrade time, if none of the existing user accounts is granted FLUSH_OPTIMIZER_COSTS, FLUSH_USER_RESOURCES, FLUSH_TABLES or FLUSH_STATUS these will be granted to all the current holders of the RELOAD privilege. 
FR8: mysqladmin flush-hosts will first try TRUNCATE and end here if it succeeds. If it fails it will try FLUSH HOSTS as it does now.
FR9: the deprecated COM_REFRESH RPC command will not be extended to check the new privs.