MySQL auth_socket 验证插件的工作原理

Posted yizdu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL auth_socket 验证插件的工作原理相关的知识,希望对你有一定的参考价值。

auth_socket的验证方式是:客户端通过启用SO_PEERCRED选项的socket连接到mysql服务端,服务端从该socket检测运行该客户端的系统用户名是否为要登录的mysql用户名。若用户名相同,则登录,若不同,则拒绝。若用户名使用未启用SO_PEERCRED选项的socket连接,也会拒绝。

SO_PEERCRED是一个Unix域socket才能启用的选项,而Unix域socket只在本机通信时才会使用。所以,配置了auth_socket的mysql用户无法通过mysql客户端远程登录,因为远程登录会启用TCP/IP socket。当然,既然叫Unix域,能使用这种socket的当然只有Linux和其他类Unix操作系统。启用该选项的socket,会向目标发送连接者的凭据信息(包括用户名)。mysql服务端获取该凭据并比对用户名是否相等以此决定是否允许登录。

参考

  • [1] Linux manual page unix(7)

以上是关于MySQL auth_socket 验证插件的工作原理的主要内容,如果未能解决你的问题,请参考以下文章

MySQL失败:mysql“错误1524(HY000):插件'auth_socket'未加载”

MySQL失败:mysql“错误1524(HY000):插件'auth_socket'未加载”

ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded

Linux 下安装 MySQL 后给 root 用户设置密码

ubuntu 18.04用apt安装mysql-server

[日常] 解决mysql localhost可以连接但是127.0.0.1不能连接