Vyk*_*tor 4 mysql remote logging centos connections
我需要允许远程连接到在最新稳定的 CentOS 上运行的 mysql 服务器。
我根本不喜欢这个想法,所以我想至少收集尽可能多的相关信息。确切地说,我需要(想要)以下内容:
根据mysql 手册,要么记录所有内容(不可接受的性能开销),要么记录与我无关的内容(以及什么可以帮助我们跟踪攻击者/不负责任的管理员)。
我想过每隔 N 分钟 grep 并删除这个日志,但这似乎不对。
实际上有一种方法可以将所有连接记录到 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));
设置初始化连接变量。这是要为每个连接的客户端执行的字符串。详细信息请参见此处。
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 系统变量不适用于具有全局权限的用户。无论好坏,我们所有 DBA 都知道这意味着什么。
观察您的连接表的成长和繁荣。您刚刚开始了一个新的宠物(项目)。
来源:http ://mysqlhints.blogspot.com.es/2011/01/how-to-log-user-connections-in-mysql.html
现在您必须期望您的用户负责,他们可能会开始用数据淹没您的表,但随后您会与恶意的人打交道。为了安全起见,我将使用一个远程位置来监视该表并保留其副本。
归档时间: |
|
查看次数: |
5466 次 |
最近记录: |