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
方式不需要密码。如下图