记录 MySQL 登录尝试

Car*_*osH 27 mysql login logging

我们的 MySQL 生产服务器中不时有失败的登录尝试(MySQL 仪表板提醒我们)。有没有办法在不启用的情况下记录每次成功和失败的 MySQL 服务器登录general_log

我们认为general_log这不是一个选项,因为它是一个高负载的生产服务器。

小智 21

只是为了通知好奇的人:挖掘您的错误日志并快速!

(1). 编辑 my.cnf(此处可找到设置文档)

[mysqld]

:#输入错误日志文件的名称。否则将使用默认名称。

log_error = /var/log/mysql/error

:#defaults 为 1。如果该值 > 1,则新连接尝试的中止连接和拒绝访问错误将写入错误日志

log_warnings = 2

...

(2). 在命令运行

$ sudo cat /var/log/mysql/error.err | egrep '[aA] 拒绝访问'

(3). 你有它!

(4). 如果您需要限制用户(dos 攻击或多用户数据库中的 mysql 用户密码恢复尝试),则(http://dev.mysql.com/doc/refman/5.5/en/user-resources.html

mysql> GRANT USAGE ON * 。* TO 'attacker'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 100;

限制为每小时仅 100 次密码恢复尝试。


kon*_*ung 1

嗨,我认为这是不可能的。

从 mysql 5.1.29 开始 - 您可以指定存储选项(表或文件)和位置以及您想要的日志 - 错误、一般、二进制或慢速查询。据我所知 - 您无法指定日志的格式或记录的内容。我可能是错的 - 但我认为所有登录尝试都将记录在常规日志中,而不是错误日志中。

然而,假设你的 mysql 服务器运行在与你的应用程序服务器不同的机器上,并且你需要打开端口 3306 (或其他端口)并且你不能使用 ssh 隧道,你的 mysql 服务器仍然不应该被任何人随意访问 -无论如何。我强烈建议不要将其暴露给网络流量,如果您必须(例如位于防火墙后面的某个地方),请将其绑定到您的应用程序服务器的 IP 地址或 IP 块以及您的管理访问 IP(您所在的位置)访问自)

希望有帮助。