
一台存数据的 mysql 服务器,版本是 5.7.30 ,然后看日志每分钟有十多条连续的登录失败记录,
类似这样: 2020-05-18T13:22:49.608114+08:00 2278 [Note] Access denied for user 'xxxx'@'localhost' (using password: NO)
问题是 mysql 中没有这个 xxx 账户,而且它是从本机 localhost 尝试登录,没有使用密码。
请问各位大佬有什么思路能够定位这个登录请求是哪个程序发起的。
我已经把没用的服务都停止了,crontab 定时任务也都清除了,看其他进程也没有啥可疑的,找了好久了,请问有没有什么解决方法?
1 yemoluo 2020-05-18 13:54:19 +08:00 还有一种 navicat 等工具用 ssh 方式登录主机然后再连接 mysql 的 |
2 msg7086 2020-05-18 15:19:17 +08:00 via Android 有尝试行为的时候用 netstat 看看有没有可疑连接。 |
3 fensou 2020-05-18 16:18:38 +08:00 via iPhone webshell,和 ssh 跳转两种可能 |
4 star7th 2020-05-18 16:24:04 08:00 可以尝试这么一个思路。停止 mysqk,用一个代理软件代理 mysql 的端口。看看访问日志能不做找出线索。 |
5 julyclyde 2020-05-18 16:39:10 +08:00 |
7 star7th 2020-05-18 16:42:25 +08:00 写错,是,原来的 3306 被代理程序监听并转发到 3309 |
8 julyclyde 2020-05-18 16:50:15 +08:00 @star7th 首先,原 po 提问的问题是遇到了 localhost 过来的错误登录。mysql 里 localhost 和 127.0.0.1 可不是同一个概念 其次,用代理监听再转发会导致“源 IP”变化,mysql 语境下这种变化会导致登录的其实是另一个用户 |
9 jimrok 2020-05-18 16:55:56 +08:00 了解一下 lsof 命令,可以找到跟 3306 端口连接的进程名字和 pid |
10 yc8332 2020-05-18 17:09:00 +08:00 netstat 查一下连接 3306 的 ip 地址和进程 |
11 msg7086 2020-05-18 22:23:43 +08:00 via Android @julyclyde MySQL 只有在连接的时候 localhost 才不是一个概念。服务器端走 TCP 127.0.0.1 连接的时候还是会解析到 localhost 主机用户条目的。 另外我说用 netstat 主要是要看有没有人远程连上本地服务以后跳板尝试密码,不是为了看程序间的连接。 |
13 msg7086 2020-05-19 14:10:31 +08:00 @julyclyde 当然连不上了。 我说的是「只有在连接的时候,localhost 才不是一个概念」。 然后你跟我说能不能连上。 我寻思着这不是重复一遍我的观点嘛。 localhost 的特殊处理是来自 libmysqlclient,又不是来自 MySQL Server 。 你客户端连不连得上,管服务器上的账号验证何事。 你自己开个测试机,自己运行一下 mysql -h 127.0.0.1,看看 Access denied 后面写的到底是 [email protected] 还是 root@localhost 。 |
15 msg7086 2020-05-19 14:35:14 +08:00 |
16 julyclyde 2020-05-19 16:46:07 +08:00 |
17 julyclyde 2020-05-19 16:46:35 +08:00 不过我之前说的“你说的这个场景下当然是 127 了”确实是错了。我再研究一下原因 |