Назад | Перейти на главную страницу

Журнал удаленных подключений mysql

Мне нужно разрешить удаленные подключения к моему серверу mysql, работающему на последней стабильной CentOS.

Мне эта идея совсем не нравится, поэтому я хочу собрать как можно больше релевантной информации. Если быть точным, мне нужно (хочу) следующее:

В соответствии с руководство по mysql, либо ведется запись всего (неприемлемые накладные расходы на производительность), либо ничего, что мне кажется актуальным (и что поможет нам отследить злоумышленника / безответственного администратора).

Я думал о том, чтобы стереть этот журнал каждые N минут, но это кажется неправильным.

На самом деле есть способ регистрировать все подключения в самом mysql:

Предположения: имя базы данных, которую мы будем использовать для хранения этой информации, будет называться admin.

  1. Создайте таблицу для хранения информации о соединении. Вам не нужно включать уникальный ключ, если вы не хотите.

    CREATE TABLE admin.connections (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, connect_time DATETIME NOT NULL, user_host VARCHAR(50) NOT NULL, connection_id INT UNSIGNED NOT NULL, UNIQUE INDEX idx_connect_time_user_host (connect_time, user_host));

  2. Установите переменную init-connect. Это строка, которая должна выполняться для каждого подключающегося клиента. Подробности здесь.

    SET GLOBAL init_connect = "INSERT INTO admin.connections (connect_time, user_host, connection_id) VALUES (NOW(), CURRENT_USER(), CONNECTION_ID());";

  3. Проверьте разрешения всех ваших пользователей, чтобы убедиться, что они могут вставить запись в таблицу admin.connections.

  4. Войдите в систему как пользователь без глобальных привилегий, и в таблицу admin.connections необходимо вставить строку. Обратите внимание, что системная переменная init-connect не работает для пользователей с глобальными привилегиями. Хорошо это или плохо, но все мы, администраторы баз данных, знаем, что это значит.

  5. Наблюдайте, как ваш стол связи растет и процветает. Вы только что начали новое домашнее животное (проект).

Источник: http://mysqlhints.blogspot.com.es/2011/01/how-to-log-user-connections-in-mysql.html

Теперь вы должны ожидать, что ваши пользователи несут ответственность, они могут начать наводнять вашу таблицу данными, но затем вы будете иметь дело с кем-то со злым умыслом. На всякий случай я бы использовал удаленное место, которое следит за этой таблицей и хранит ее копию.