一台存数据的 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
GTim 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 了”确实是错了。我再研究一下原因
|