# # MDEV-13655: SET ROLE does not properly grant privileges. # # We must test that if aditional db privileges get granted to a role # which previously inherited privileges from another granted role # keep the internal memory structures intact. # create role simple; # # First we create an entry with privileges for databases for the simple role. # grant select, insert, update, delete, lock tables, execute on t.* to simple; create role admin; # # Now we grant the simple role to admin. This means that db privileges # should propagate to admin. # grant simple to admin; show grants for admin; Grants for admin GRANT simple TO 'admin' GRANT USAGE ON *.* TO 'admin' GRANT USAGE ON *.* TO 'simple' GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES, EXECUTE ON `t`.* TO 'simple' # # Finally, we give the admin all the available privileges for the db. # grant all on t.* to admin; # # Create a user to test out the new roles; # create user foo; grant admin to foo; connect foo,localhost,foo,,,,,; create database t; ERROR 42000: Access denied for user 'foo'@'%' to database 't' set role admin; show grants; Grants for foo@% GRANT admin TO 'foo'@'%' GRANT USAGE ON *.* TO 'foo'@'%' GRANT simple TO 'admin' GRANT USAGE ON *.* TO 'admin' GRANT ALL PRIVILEGES ON `t`.* TO 'admin' GRANT USAGE ON *.* TO 'simple' GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES, EXECUTE ON `t`.* TO 'simple' create database t; drop database t; connection default; drop role simple; drop role admin; drop user foo;