I was able to take the two suggestions here and combine them into a single stored procedure that I've been personally using and wanted to share, hope it helps someone else!
DELIMITER $$
DROP PROCEDURE IF EXISTS ReplaceValueInStringColumns$$
CREATE PROCEDURE ReplaceValueInStringColumns
(IN db_name VARCHAR(255),
IN old_value VARCHAR(255),
IN new_value VARCHAR(255))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE col_name VARCHAR(255);
DECLARE tbl_name VARCHAR(255);
DECLARE col_type VARCHAR(255);
DECLARE sql_query TEXT;
DECLARE col_names CURSOR FOR
SELECT column_name, table_name, data_type
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = db_name
AND data_type IN ('char', 'varchar', 'text', 'tinytext', 'mediumtext', 'longtext');
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN col_names;
read_loop: LOOP
FETCH col_names INTO col_name, tbl_name, col_type;
IF done THEN
LEAVE read_loop;
END IF;
-- Output the table name being updated
SELECT CONCAT('Updating table: ', tbl_name) AS message;
SET @sql_query = CONCAT('UPDATE ', tbl_name, ' SET ', col_name, ' = REPLACE(', col_name, ', "', old_value, '", "', new_value, '");');
PREPARE stmt FROM @sql_query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE col_names;
END$$
DELIMITER ;
And then when you want to use it, you just call the stored procedure:
CALL ReplaceValueInStringColumns('your_database_name', 'old_value', 'new_value');