# # MDEV-9614 Roles and Users Longer than 6 characters # # This test case checks the edge case presented in the MDEV. The # real issue is actually apparent when the username is longer than the # rolename. # # We need a separate database not including test or test_% names. Due to # default privileges given on these databases. # DROP DATABASE IF EXISTS `bug_db`; Warnings: Note 1008 Can't drop database 'bug_db'; database doesn't exist # # The first user did not show the bug as john's length is smaller # than client. The bug is apparent most of the time for usertestjohn. # CREATE USER `john`@`%`; CREATE USER `usertestjohn`@`%`; CREATE ROLE `client`; # # Setup the required tables. # CREATE DATABASE `bug_db`; CREATE TABLE `bug_db`.`t0`(`c0` INT); # # Setup select privileges only on the role. Setting the role should give # select access to bug_db.t0. # GRANT SELECT ON `bug_db`.`t0` TO `client`; GRANT `client` TO `john`@`%`; GRANT `client` TO `usertestjohn`@`%`; # # Check to see grants are set. # SHOW GRANTS FOR `john`@`%`; Grants for john@% GRANT `client` TO `john`@`%` GRANT USAGE ON *.* TO `john`@`%` SHOW GRANTS FOR `usertestjohn`@`%`; Grants for usertestjohn@% GRANT `client` TO `usertestjohn`@`%` GRANT USAGE ON *.* TO `usertestjohn`@`%` SHOW GRANTS FOR `client`; Grants for client GRANT USAGE ON *.* TO `client` GRANT SELECT ON `bug_db`.`t0` TO `client` show databases; Database bug_db information_schema mtr mysql performance_schema sys test # # Try using the database as john. # connect john, localhost, john,,information_schema; show databases; Database information_schema set role client; show databases; Database bug_db information_schema use bug_db; # # Try using the database as usertestjohn. # connect usertestjohn, localhost, usertestjohn,,information_schema; show databases; Database information_schema set role client; show databases; Database bug_db information_schema show grants; Grants for usertestjohn@% GRANT `client` TO `usertestjohn`@`%` GRANT USAGE ON *.* TO `usertestjohn`@`%` GRANT USAGE ON *.* TO `client` GRANT SELECT ON `bug_db`.`t0` TO `client` use bug_db; # # Cleanup # connection default; drop user john; drop user usertestjohn; drop role client; drop database bug_db;