跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 各位大佬,请教一个 mysql 的问题
未分類
15 5 月 2020

各位大佬,请教一个 mysql 的问题

各位大佬,请教一个 mysql 的问题

資深大佬 : fivestrong 3

一台存数据的 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 定时任务也都清除了,看其他进程也没有啥可疑的,找了好久了,请问有没有什么解决方法?

大佬有話說 (17)

  • 資深大佬 : GTim

    还有一种 navicat 等工具用 ssh 方式登录主机然后再连接 mysql 的

  • 資深大佬 : msg7086

    有尝试行为的时候用 netstat 看看有没有可疑连接。

  • 資深大佬 : fensou

    webshell,和 ssh 跳转两种可能

  • 資深大佬 : star7th

    可以尝试这么一个思路。停止 mysqk,用一个代理软件代理 mysql 的端口。看看访问日志能不做找出线索。

  • 資深大佬 : julyclyde

    @msg7086 这种用 netstat 看不了吧

    @star7th mysql 按你建议的这种代理会导致权限错误的,登录不进来

  • 資深大佬 : star7th

    @julyclyde 那就这样。mysql 的端口改为 3309,原来的 3306 被代理程序监听并转发到 3307

  • 資深大佬 : star7th

    写错,是,原来的 3306 被代理程序监听并转发到 3309

  • 資深大佬 : julyclyde

    @star7th
    首先,原 po 提问的问题是遇到了 localhost 过来的错误登录。mysql 里 localhost 和 127.0.0.1 可不是同一个概念
    其次,用代理监听再转发会导致“源 IP”变化,mysql 语境下这种变化会导致登录的其实是另一个用户

  • 資深大佬 : jimrok

    了解一下 lsof 命令,可以找到跟 3306 端口连接的进程名字和 pid

  • 資深大佬 : yc8332

    netstat 查一下连接 3306 的 ip 地址和进程

  • 資深大佬 : msg7086

    @julyclyde MySQL 只有在连接的时候 localhost 才不是一个概念。服务器端走 TCP 127.0.0.1 连接的时候还是会解析到 localhost 主机用户条目的。

    另外我说用 netstat 主要是要看有没有人远程连上本地服务以后跳板尝试密码,不是为了看程序间的连接。

  • 資深大佬 : julyclyde

    @msg7086 你把 unix domain socket 关闭试试,看 localhost 的用户名还能不能连上

  • 資深大佬 : msg7086

    @julyclyde 当然连不上了。
    我说的是「只有在连接的时候,localhost 才不是一个概念」。
    然后你跟我说能不能连上。
    我寻思着这不是重复一遍我的观点嘛。

    localhost 的特殊处理是来自 libmysqlclient,又不是来自 MySQL Server 。
    你客户端连不连得上,管服务器上的账号验证何事。

    你自己开个测试机,自己运行一下 mysql -h 127.0.0.1,看看 Access denied 后面写的到底是 [email protected] 还是 [email protected] 。

  • 資深大佬 : julyclyde

    @msg7086 access denied 是服务器返回的信息,你说的这个场景下当然是 127 了

  • 資深大佬 : msg7086

    @julyclyde
    # mysql -h 127.0.0.1
    ERROR 1698 (28000): Access denied for user ‘root’@’localhost’

  • 資深大佬 : julyclyde

    我的实验场景虽然得到和你一样的结果,但是有证据说明身份是由服务器端认定的,而不是客户端自称的:

    mysqld 开启 skip_ssl 参数,避免加密
    strace mysql -h 127.0.0.1 在前面加 strace 观察通信,可以看到下列内容:
    connect 建立连接
    recfrom 收到服务器的 banner 信息
    sendto 只发送了用户名,并没有带有 @127.0.0.1 或者 @localhost 的后缀
    然后 recvfrom 收到服务器返回的错误信息 Access denied for user ‘root’@’localhost’

  • 資深大佬 : julyclyde

    不过我之前说的“你说的这个场景下当然是 127 了”确实是错了。我再研究一下原因

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具