create user test_user@localhost; create role test_role; grant select on *.* to test_role; grant test_role to test_user@localhost; connect c1, localhost, test_user,,; show grants; Grants for test_user@localhost GRANT test_role TO 'test_user'@'localhost' GRANT USAGE ON *.* TO 'test_user'@'localhost' select user, host, default_role from mysql.user where user = 'test_user'; ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'user' set default role test_role; select user, host, default_role from mysql.user where user = 'test_user'; ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'user' disconnect c1; connection default; select user, host, default_role from mysql.user where user = 'test_user'; User Host default_role test_user localhost test_role connect c1, localhost, test_user,,; show grants; Grants for test_user@localhost GRANT test_role TO 'test_user'@'localhost' GRANT USAGE ON *.* TO 'test_user'@'localhost' GRANT SELECT ON *.* TO 'test_role' select user, host, default_role from mysql.user where user = 'test_user'; User Host default_role test_user localhost test_role set default role NONE; disconnect c1; connection default; select user, host, default_role from mysql.user where user = 'test_user'; User Host default_role test_user localhost connect c1, localhost, test_user,,; show grants; Grants for test_user@localhost GRANT test_role TO 'test_user'@'localhost' GRANT USAGE ON *.* TO 'test_user'@'localhost' select user, host, default_role from mysql.user where user = 'test_user'; ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'user' disconnect c1; connection default; select user, host, default_role from mysql.user where user = 'test_user'; User Host default_role test_user localhost set default role test_role for test_user@localhost; connect c1, localhost, test_user,,; show grants; Grants for test_user@localhost GRANT test_role TO 'test_user'@'localhost' GRANT USAGE ON *.* TO 'test_user'@'localhost' GRANT SELECT ON *.* TO 'test_role' select user, host, default_role from mysql.user where user = 'test_user'; User Host default_role test_user localhost test_role disconnect c1; connection default; drop role test_role; drop user test_user@localhost;