MySQL 本地免密登录可以通过以下两种常见方式实现:
1. 使用 auth_socket
插件(推荐方式,针对 Linux 环境)
auth_socket
插件允许 MySQL 使用操作系统用户进行身份验证,而不需要密码。默认情况下,这种方式主要用于 Linux 系统,可以实现本地用户直接通过系统身份进行免密登录。
步骤:
-
查看当前用户的身份验证插件:
sqlSELECT user, host, plugin FROM mysql.user WHERE user = 'root';
看看当前
root
用户或其他用户是否已经使用了auth_socket
插件。 -
修改用户身份验证插件为
auth_socket
:如果还未启用
auth_socket
,可以运行以下命令将其应用到root
用户(或你想免密登录的用户):sqlALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
这会让
root
用户通过操作系统的root
用户身份登录,而无需密码。 -
重启 MySQL 服务 :
修改插件后,需要重启 MySQL 服务:
bashsudo systemctl restart mysql
-
免密登录 :
在终端中使用操作系统的
root
用户身份,可以直接运行以下命令免密登录:bashsudo mysql
或者使用其他具有相应权限的用户直接运行:
bashmysql -u root
2. 使用 .my.cnf
配置文件保存密码
另一种实现 MySQL 免密登录的方式是将密码存储在 MySQL 客户端的配置文件 .my.cnf
中。这样,MySQL 客户端在执行时会自动使用该文件中的凭据进行身份验证,而不需要手动输入密码。
步骤:
-
创建或编辑用户主目录下的
.my.cnf
文件:bashnano ~/.my.cnf
-
在文件中添加以下内容:
ini[client] user=root password=你的密码
-
设置文件权限 :
为了安全起见,限制该文件的读取权限,确保只有文件拥有者能访问:
bashchmod 600 ~/.my.cnf
-
免密登录 :
现在,你可以直接运行
mysql
命令,而不需要输入密码:bashmysql
注意事项:
auth_socket
插件 适用于 Linux 系统,通过系统用户身份实现免密,但不适用于远程登录。.my.cnf
文件方式 更加通用,适用于本地或远程登录,但要注意.my.cnf
文件的安全性,确保权限设置正确以防止密码泄露。
这两种方式都可以有效实现 MySQL 本地的免密登录,根据你的使用环境选择最合适的方案。