#create a user with no privileges create user 'test_user'@'localhost'; create user 'test_role1'@''; #manualy create role update mysql.user set is_role='Y' where user='test_role1'; insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', 'test_user', 'test_role1'); create user 'test_role2'@''; #manualy create role update mysql.user set is_role='Y' where user='test_role2'; insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', 'test_role1', 'test_role2'); flush privileges; --sorted_result select user, host from mysql.user where user not like 'root'; --sorted_result select * from mysql.roles_mapping where UserFk like 'test_user'; --sorted_result select * from mysql.roles_mapping where UserFk like 'test_role1'; grant select on *.* to 'test_role2'@''; --sorted_result select * from mysql.user where user like 'test_role1'; --sorted_result select * from mysql.user where user like 'test_role2'; flush privileges; change_user 'test_user'; --error ER_TABLEACCESS_DENIED_ERROR select * from mysql.roles_mapping; --sorted_result show grants; set role test_role1; --sorted_result show grants; select * from mysql.roles_mapping where HostFk=''; --sorted_result show grants; set role none; --sorted_result show grants; --error ER_TABLEACCESS_DENIED_ERROR select * from mysql.roles_mapping; --sorted_result show grants; --error ER_INVALID_ROLE set role test_role2; --sorted_result show grants; --error ER_TABLEACCESS_DENIED_ERROR select * from mysql.roles_mapping; #Make sure that this still works after an ER_INVALID_ROLE error --sorted_result show grants; set role test_role1; --sorted_result show grants; --sorted_result select * from mysql.roles_mapping where HostFk=''; --sorted_result show grants; set role none; --sorted_result show grants; --error ER_TABLEACCESS_DENIED_ERROR select * from mysql.roles_mapping; change_user 'root'; delete from mysql.user where user='test_role1'; delete from mysql.user where user='test_role2'; delete from mysql.roles_mapping; flush privileges; drop user 'test_user'@'localhost';