#create a user with no privileges create user 'test_user'@'localhost'; create role test_role1; create role test_role2; insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', 'test_user', 'test_role1'); insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', 'test_user', 'test_role2'); insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', 'test_role1', 'test_role2'); --sorted_result select user, host from mysql.user where user not like 'root'; --sorted_result select * from mysql.roles_mapping; flush privileges; --sorted_result select user, host from mysql.db; grant select on mysql.* to test_role2; flush privileges; change_user 'test_user'; --error ER_TABLEACCESS_DENIED_ERROR select * from mysql.roles_mapping; select current_user(), current_role(); set role test_role1; select current_user(), current_role(); --sorted_result select * from mysql.roles_mapping; set role none; select current_user(), current_role(); --error ER_TABLEACCESS_DENIED_ERROR select * from mysql.roles_mapping; set role test_role2; select current_user(), current_role(); --sorted_result select * from mysql.roles_mapping; change_user 'root'; drop user 'test_user'@'localhost'; revoke select on mysql.* from test_role2; delete from mysql.user where user='test_role1'; delete from mysql.user where user='test_role2'; delete from mysql.roles_mapping where RoleFk='test_role1'; delete from mysql.roles_mapping where RoleFk='test_role2'; flush privileges;