导读:本期聚焦于小伙伴创作的《如何在CentOS 7上配置MySQL用户认证插件的详细步骤?》,敬请观看详情。默认安装的MySQL 5.7在CentOS 7上使用了mysql_native_password之外的认证方式,导致部分旧版客户端连接失败。本文理清了认证插件的工作机制,说明如何通过修改系统表与配置文件切换为mysql_native_password或caching_sha2_password。我们会演示创建用户时指定插件、已存在用户变更插件以及服务重启后的生效验证,并比较两种插件在兼容性与安全上的差异,帮助你按业务场景正确配置。

在CentOS 7环境中部署MySQL后,用户认证插件决定了客户端如何校验密码以及服务端如何存储凭证。不同MySQL版本默认的认证插件并不一致,错误配置会直接导致连接被拒。理解插件类型并掌握修改方法,是运维和开发调试数据库连接问题的基础。

如何在CentOS 7上配置MySQL用户认证插件的详细步骤?

一、MySQL常见认证插件类型

MySQL支持多种用户认证插件,其中最常用的是mysql_native_passwordcaching_sha2_password。前者使用SHA1哈希加随机盐,兼容性极广,几乎被所有历史客户端支持;后者从MySQL 8.0开始作为默认插件,采用SHA256并引入缓存机制,安全性更高,但部分旧驱动无法识别。

在CentOS 7上通过YUM安装的MySQL 5.7默认使用mysql_native_password,而如果使用第三方仓库装了MySQL 8.0,则默认是caching_sha2_password。我们可以通过查询mysql.user表来确认当前用户使用的插件类型,这一步是后续配置的前提。

SELECT user, host, plugin
FROM mysql.user;

二、创建用户时指定认证插件

如果要在创建用户的同时明确使用某种插件,可以在CREATE USER语句中通过IDENTIFIED WITH子句声明。这样可以避免后续再修改,也方便在自动化脚本中固化配置。下面示例创建一个只能从本地连接的用户,并强制使用mysql_native_password

这种方式的优点是配置即生效,不需要重启服务,也不会影响既有用户。但要注意密码必须符合该插件的格式要求,例如mysql_native_password对明文密码长度没有特殊限制,而caching_sha2_password要求使用TLS或明文支持。以下代码展示了两种插件的创建语法:

-- 使用mysql_native_password创建用户
CREATE USER 'appuser'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'StrongPass123';

-- 使用caching_sha2_password创建用户
CREATE USER 'appuser2'@'192.168.0.1'
IDENTIFIED WITH caching_sha2_password BY 'StrongPass123';

三、修改已存在用户的认证插件

对于已经创建但插件不符合需求的用户,可以使用ALTER USER命令变更。这在迁移旧系统或升级MySQL后尤其常见。执行变更后,该用户的密码会按新插件规则重新加密存储,旧客户端若不支持新插件就会连接失败,因此需要同步升级驱动。

下面演示将已有用户改为caching_sha2_password,并重新设置密码以触发哈希重写。修改完成后必须执行FLUSH PRIVILEGES,让权限系统重新加载,虽然ALTER USER通常自动生效,但在某些CentOS 7的旧版MySQL中显式刷新更稳妥。

-- 修改用户插件并重置密码
ALTER USER 'appuser'@'localhost'
IDENTIFIED WITH caching_sha2_password BY 'NewStrongPass456';

FLUSH PRIVILEGES;

四、通过配置文件设置默认插件

如果希望所有新用户都默认使用某插件,可以修改MySQL服务端配置。在CentOS 7中,配置文件通常位于/etc/my.cnf/etc/my.cnf.d/目录下。添加default_authentication_plugin参数后重启服务即可生效。

需要注意,修改默认插件不会影响已有用户,只对之后创建的用户有效。若服务端是MySQL 8.0且客户端多为旧版PHP或Python库,建议设为mysql_native_password以减少连接故障。以下为配置片段示例,修改后需用systemctl重启mysqld。

[mysqld]
default_authentication_plugin=mysql_native_password
# 重启MySQL服务使配置生效
systemctl restart mysqld

五、验证配置结果与连接测试

配置完成后,应从数据库内部和客户端两个层面验证。内部验证就是再次查询mysql.user表,确认plugin列已更新;外部验证则使用对应客户端尝试连接,观察是否报“authentication plugin”相关错误。

若使用命令行客户端连接,可以加参数显式指定插件,便于排查。例如在CentOS 7本机执行mysql -u appuser -p后,若提示 caching_sha2 不支持,可临时用支持该插件的8.0客户端测试。下表对比了两种插件的特性,方便按场景选择。

插件名称默认版本客户端兼容性安全特性
mysql_native_passwordMySQL 5.7几乎所有旧客户端SHA1加盐,较弱
caching_sha2_passwordMySQL 8.0需新驱动支持SHA256加缓存,强

六、常见误区与处理建议

一个常见误区是认为修改了配置文件就自动转换了老用户的插件,实际上老用户依旧保留原插件,必须逐条ALTER。另一个误区是在Docker或远程连接时忽略了防火墙与bind-address,把认证错误误判为网络问题。

建议在变更前备份mysql系统库,并在测试环境验证客户端兼容性。如果业务使用ORM框架,请查阅其依赖的数据库驱动版本是否支持目标插件,以免上线后大面积连接异常。

# 备份mysql系统库
mysqldump -u root -p --single-transaction mysql > mysql_backup.sql

MySQLauthentication_pluginCentOS_7修改时间:2026-08-04 12:30:19

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。