mysql - 免密登录(使用 auth_socket 插件)
理论介绍
auth_socket 是什么
是一种 mysql 的加密方式。允许用户使用系统(Unix/Linux)账号登录 MySQL,而不使用密码
即当 plugin 为 auth_socket 时:
- MySQL 不管
authentication_string(密码字段) - 登录验证依赖于操作系统的当前用户身份(例如,使用
sudo mysql是root用户身份,mysql就是当前用户身份)
使用注意点
auth_socket工作原理是借助本地套接字与 Mysql 通讯,因此必须在本机上操作。因此%这个 host 没有意义,推荐写为localhost- auth_socket 的使用前提:当前用户与 mysql 用户同名(用户加密方式用的是
auth_socket) - 对于 auth_socket 插件而言,确实几乎没有必要指定
-u(如果你不是那个系统用户,写-u没意义,反正一定会拒绝;如果你就是那个系统用户,-u可省略)
使用方法
需求一:创建一个用户,加密方式使用 auth_socket
1 | 【不推荐host为`%`,因为auth_socket使用unix本地套接字通讯,仅支持`localhost`】但是也不会报错,`%`仅能匹配到`localhost`,不够优雅 |
需求二:将一个现有用户加密方式改为 auth_socket
1 | alter user kay@'%' identified with auth_socket; |
PS. 修改完毕之后,authentication_string 字段会被清空,因为 auth_socket 方式不需要密码。如下图
