MySQL免密登录的几种配置方式小结

 更新时间:2024年10月22日 11:20:09   作者:XMYX-0  
在日常运维中,为了简化登录操作或提高自动化脚本执行的效率,我们经常需要配置 MySQL 免密登录,MySQL 支持通过多种方式实现免密登录,这样我们就可以避免每次输入密码,本文给大家介绍了MySQL免密登录的几种配置方式,需要的朋友可以参考下

常见的三种免密登录配置方式是:

  • 使用操作系统用户登录
  • 配置免密文件(通过 mysql_config_editor
  • 通过 MySQL 用户授权配置免密登录
  • 通过设置client标签

本文将深入探讨这三种方法,并详细介绍它们的实现步骤和适用场景。

使用操作系统用户实现免密登录

MySQL 支持通过操作系统用户来直接登录,无需输入密码。这种方式适用于服务器上的自动化任务或定时脚本执行,方便操作。

具体步骤:

Step 1: 修改 MySQL 配置文件

找到 MySQL 的配置文件(通常位于 /etc/my.cnf/etc/mysql/my.cnf),在 [mysqld] 部分添加如下配置:

[mysqld]
skip-grant-tables

此配置项会让 MySQL 跳过权限表的校验,所有用户都无需密码即可登录。

Step 2: 重启 MySQL 服务

使用以下命令重启 MySQL 服务以使配置生效:

systemctl restart mysqld

Step 3: 使用系统用户登录 MySQL

此时可以直接使用系统用户(例如 root)登录 MySQL,而无需输入密码:

mysql -u root

注意

这种方式有一定的安全隐患,因为它完全跳过了 MySQL 的权限系统,任何有权限访问 MySQL 服务器的用户都可以登录并操作数据库。因此,这种方式应仅在调试或特殊场景下使用,且必须确保服务器的安全性,例如通过防火墙和访问控制限制外部访问。

  • 优点: 简单快捷,适合临时维护或本地调试。
  • 缺点: 安全性较低,所有用户都能绕过权限验证登录数据库。

这种也适用于忘记密码时候,配置后登陆服务器再修改密码,修改完再把配置注释即可

使用 mysql_config_editor 配置免密文件

MySQL 提供了一个非常安全的工具 mysql_config_editor,可以将登录信息加密存储在一个文件中,避免密码泄露。这样每次登录时无需手动输入密码,同时又保证了密码的安全性。

具体步骤:

Step 1: 设置免密文件

使用 mysql_config_editor 命令创建一个免密配置文件:

mysql_config_editor set --login-path=client --user=root --host=localhost --password

在执行该命令后,会提示你输入密码。密码将被加密存储在 ~/.mylogin.cnf 文件中。此文件是用户级别的,其他用户无法访问。

Step 2: 使用免密文件登录 MySQL

配置完成后,可以通过以下命令直接登录 MySQL,而无需手动输入密码:

mysql --login-path=client

优点:

  • 安全性高:密码以加密形式存储,避免了明文泄露的风险。
  • 易用性强:登录时无需每次输入密码,特别适合自动化脚本或定时任务。

缺点:

  • 适用性有限:只适用于在本地或特定路径下配置了 mysql_config_editor 的用户,其他用户无法使用同一个免密文件。

MySQL 用户授权配置免密登录

MySQL 还可以通过直接修改用户权限的方式来实现免密登录。通过这种方式,你可以灵活地为某个特定用户配置免密登录,同时保留其他用户的密码保护。这在多人管理的环境中尤其适用。

具体步骤:

Step 1: 登录 MySQL

首先使用密码登录 MySQL:

mysql -u root -p

Step 2: 修改用户的认证方式

使用 ALTER USER 语句将某个用户配置为免密登录。例如,将 root 用户在 localhost 上登录时配置为免密码登录:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

这里的 BY '' 表示将密码设置为空。

Step 3: 刷新权限

执行以下命令使修改生效:

FLUSH PRIVILEGES;

Step 4: 免密码登录

现在,用户 root 在本地可以直接登录 MySQL 而无需输入密码:

mysql -u root

优点:

  • 灵活控制:可以为指定用户和主机配置免密登录,而其他用户仍需要密码。
  • 适用于多用户环境:确保权限管理的灵活性,同时提升部分用户的便捷性。

缺点:

  • 安全风险:免密码的用户如果配置不当,可能导致安全隐患。因此,建议仅为信任的用户配置免密登录,且限制登录主机(如仅限本地登录 localhost)。

通过设置client标签

编辑/etc/my.cnf文件,添加如下代码

[client]
user=root
password=123456
port=3306

配置完成后可以使用mysql命令直接登录数据库

在这里插入图片描述

缺点

  • 安全风险:此方式最大问题是明文存储密码,见配置文件各用户可见,非常的不安全。

~/.my.cnf

此种方式也是明文存储,配置方式同client标签一样,文件为隐藏文件,设置文件为改用户可读,与上边方式相比安全性有所提高。经验证测试,~/.my.cnf配置文件优先于/etc/my.cnf。

~/.my.cnf 代表当前用户的家目录下的 .my.cnf 配置文件,只对该用户生效

[root@sonar ~]# cat .my.cnf
[client]
user=root
password=123456
port=3306
[root@sonar ~]# chmod .my.cnf

配置完成后可以使用mysql命令直接登录数据库,这个只对root用户生效

在这里插入图片描述

几种种方式的对比与应用场景

方式优点缺点适用场景
使用操作系统用户免密登录操作简单,便于调试及自动化任务安全性低,所有用户都可绕过权限校验临时调试、本地开发和短期自动化任务
配置免密文件 mysql_config_editor安全性高,避免明文存储密码,自动化任务执行方便仅限配置了免密文件的用户使用长期服务器部署、自动化脚本、定时任务
MySQL 用户授权配置免密登录灵活控制指定用户,适合多用户环境配置不当存在安全风险生产环境中指定用户的免密登录,如数据库管理员的本地管理
通过设置client标签操作简单,便于调试及自动化任务安全性低临时调试、本地开发和短期自动化任务

总结

MySQL 免密登录在特定场景下可以极大提高操作效率,减少繁琐的登录操作。在选择合适的免密登录方式时,应根据实际需求和安全性考虑:

  • 对于本地调试或短期维护任务,可以使用操作系统用户免密登录,但应注意安全风险。
  • 对于生产环境中的自动化任务,使用 mysql_config_editor 配置免密文件是一个安全且方便的选择。
  • 如果是多人管理的环境,可以通过 MySQL 用户授权方式为特定用户配置免密登录,同时保留其他用户的密码保护。

最终,合理的使用免密登录技术,不仅能提高工作效率,还能确保系统的安全性和稳定性。

以上就是MySQL免密登录的几种配置方式小结的详细内容,更多关于MySQL免密登录配置的资料请关注脚本之家其它相关文章!

相关文章

  • 解决centos下MySQL登录1045问题

    解决centos下MySQL登录1045问题

    这篇文章主要介绍了解决centos下MySQL登录1045问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • django2.2版本连接mysql数据库的方法

    django2.2版本连接mysql数据库的方法

    这篇文章主要介绍了django2.2版本如何连接mysql数据库,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • 详细聊聊MySQL中的LIMIT语句

    详细聊聊MySQL中的LIMIT语句

    大家应该都知道LIMIT子句可以被用于强制SELECT语句返回指定的记录数,这篇文章主要给大家介绍了关于MySQL中LIMIT语句的相关资料,需要的朋友可以参考下
    2021-10-10
  • mysql使用教程之分区表的使用方法(删除分区表)

    mysql使用教程之分区表的使用方法(删除分区表)

    mysql分区表使用方法,新增分区、删除分区、分区的合并、分区的拆分等使用方法
    2013-12-12
  • 清理Mysql general_log的方法总结

    清理Mysql general_log的方法总结

    在本篇文章里小编给大家分享的是一篇关于清理Mysql general_log的相关知识点,需要的朋友们学习下。
    2019-10-10
  • Mysql Sql语句注释大全

    Mysql Sql语句注释大全

    这篇文章主要介绍了Mysql Sql语句注释大全,需要的朋友可以参考下
    2017-07-07
  • MySQL判断时间段是否重合的两种方法

    MySQL判断时间段是否重合的两种方法

    这篇文章介绍了MySQL判断时间段是否重合的两种方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • MySQL索引之聚集索引介绍

    MySQL索引之聚集索引介绍

    在MySQL中,InnoDB引擎表是(聚集)索引组织表(clustered index organize table),而MyISAM引擎表则是堆组织表(heap organize table)
    2015-12-12
  • 详解如何在阿里云上安装mysql

    详解如何在阿里云上安装mysql

    mysql作为轻量级开源数据库,在企业级的应用中非常的广泛。这篇文章主要介绍了详解如何在阿里云上安装mysql,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • mySQL中replace的用法

    mySQL中replace的用法

    MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪
    2012-09-09

最新评论