Мне нужно разрешить удаленные подключения к моему серверу mysql, работающему на последней стабильной CentOS.
Мне эта идея совсем не нравится, поэтому я хочу собрать как можно больше релевантной информации. Если быть точным, мне нужно (хочу) следующее:
В соответствии с руководство по mysql, либо ведется запись всего (неприемлемые накладные расходы на производительность), либо ничего, что мне кажется актуальным (и что поможет нам отследить злоумышленника / безответственного администратора).
Я думал о том, чтобы стереть этот журнал каждые N минут, но это кажется неправильным.
На самом деле есть способ регистрировать все подключения в самом mysql:
Предположения: имя базы данных, которую мы будем использовать для хранения этой информации, будет называться admin.
Создайте таблицу для хранения информации о соединении. Вам не нужно включать уникальный ключ, если вы не хотите.
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));
Установите переменную init-connect. Это строка, которая должна выполняться для каждого подключающегося клиента. Подробности здесь.
SET GLOBAL init_connect = "INSERT INTO admin.connections (connect_time, user_host, connection_id) VALUES (NOW(), CURRENT_USER(), CONNECTION_ID());";
Проверьте разрешения всех ваших пользователей, чтобы убедиться, что они могут вставить запись в таблицу admin.connections.
Войдите в систему как пользователь без глобальных привилегий, и в таблицу admin.connections необходимо вставить строку. Обратите внимание, что системная переменная init-connect не работает для пользователей с глобальными привилегиями. Хорошо это или плохо, но все мы, администраторы баз данных, знаем, что это значит.
Наблюдайте, как ваш стол связи растет и процветает. Вы только что начали новое домашнее животное (проект).
Источник: http://mysqlhints.blogspot.com.es/2011/01/how-to-log-user-connections-in-mysql.html
Теперь вы должны ожидать, что ваши пользователи несут ответственность, они могут начать наводнять вашу таблицу данными, но затем вы будете иметь дело с кем-то со злым умыслом. На всякий случай я бы использовал удаленное место, которое следит за этой таблицей и хранит ее копию.