I was testing one of my automations and needed MySQL to intentionally consume a lot of memory, so it will be killed by OOM Killer and I found this great answer in StackOverflow:
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`eat_memory_until_server_crashes` $$
CREATE PROCEDURE `test`.`eat_memory_until_server_crashes`()
BEGIN
-- this procedure is intended to eat as much memory as it can
-- it creates a series of consecutively-numbered session variables as large
-- as your configuration will allow them to be.
-- do not run this unless you intend to crash your server
-- also, do not run from a gui tool -- use the mysql command line client:
-- mysql> CALL test.eat_memory_until_server_crashes;
-- if you kill the query or thread before the server crashes,
-- the memory consumed will be returned to the OS
DECLARE counter INT DEFAULT 0;
LOOP
SET counter = counter + 1;
SET @qry = CONCAT('SET @crash_me_',counter,' := REPEAT(\'a\', @@max_allowed_packet)');
SELECT counter, @qry;
PREPARE hack FROM @qry;
EXECUTE hack;
DEALLOCATE PREPARE hack;
-- adjust timing or remove this entirely depending on how quickly you want this to happen
DO SLEEP(0.1);
END LOOP;
END $$
DELIMITER ;