我需要允许远程连接到最新的稳定的CentOS上运行我的MySQL服务器。
我根本不喜欢这个想法,所以我想至less收集尽可能多的相关信息。 确切地说,我需要(想)以下内容:
根据mysql手册 ,要么logging一切(不能接受的性能开销),要么没有什么似乎与我有关(什么可以帮助我们追踪攻击者/不负责任的pipe理员)。
我每隔N分钟就考虑一下擦除和擦除这个日志,但是这看起来不对。
实际上有一种方法可以将所有连接logging到mysql本身中:
假设:我们将用来存储这些信息的数据库名称将被称为admin。
创build表来存储连接信息。如果不需要,则不必包含唯一的密钥。
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-connectvariables。 这是为每个连接的客户端执行的string。 详情在这里。
SET GLOBAL init_connect = "INSERT INTO admin.connections (connect_time, user_host, connection_id) VALUES (NOW(), CURRENT_USER(), CONNECTION_ID());";
检查所有用户的权限,以确保他们可以将logging插入到admin.connections表中。
以没有全局权限的用户身份login,并且应该在admin.connections表中插入一行。 请注意,init-connect系统variables对具有全局权限的用户不起作用。 无论好坏,我们所有的DBA都知道这意味着什么。
注意你的连接表增长和蓬勃发展。 你刚刚开始一个新的宠物(项目)。
资料来源: http : //mysqlhints.blogspot.com.es/2011/01/how-to-log-user-connections-in-mysql.html
现在你不得不指望你的用户是负责任的,他们可能会开始用数据泛滥,但是随后你与恶意的人打交道。 为了安全起见,我使用一个远程位置来监视这个表格,并保留它的一个副本。