AWS: MariaDB RDS — kill: You are not owner of thread

Автор: | 05/14/2019
 

Имеется AWS RDS с MariaDB.

Ошибка и решение не специфичны ни для AWS RDS, ни для MariaDB.

При попытке убить процесс — RDS сообщает, что:

MariaDB [(none)]> kill 759;
ERROR 1095 (HY000): You are not owner of thread 759

Решение — использовать процедуру mysql.rds_kill():

MariaDB [(none)]> SHOW CREATE PROCEDURE mysql.rds_kill\G
*************************** 1. row ***************************
Procedure: rds_kill
sql_mode: NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Create Procedure: CREATE DEFINER=`rdsadmin`@`localhost` PROCEDURE `rds_kill`(IN thread BIGINT)
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE l_user varchar(16);
DECLARE l_host varchar(64);
DECLARE foo varchar(255);
SELECT user, host INTO l_user, l_host
FROM information_schema.processlist
WHERE id = thread;
IF l_user = "rdsadmin" and l_host like "localhost%" THEN
select `ERROR (RDS): CANNOT KILL RDSADMIN SESSION` into foo;
ELSEIF l_user = "rdsrepladmin" THEN
select `ERROR (RDS): CANNOT KILL RDSREPLADMIN SESSION` into foo;
ELSE
KILL thread;
END IF;
END

Вызываем её:

MariaDB [(none)]> CALL mysql.rds_kill(761);
Query OK, 0 rows affected (0.00 sec)

Для Azure MySQL имеется аналогичная процедура mysql.az_kill().

Готово.