You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级MySQL 5.7至8.0.33后password()函数报错求替代方案

MySQL 8.0 替换PASSWORD()函数的用户密码设置方案

MySQL 8.0已彻底移除PASSWORD()函数,原5.7版本的密码设置语句无法直接使用。你尝试的手动拼接哈希值的方式报错,大概率是因为MySQL 8.0默认使用caching_sha2_password认证插件,而该哈希格式仅适配旧版的mysql_native_password插件,两者不兼容导致的。

以下是两种可行的等效方案:

方案一:官方推荐的ALTER USER语法(优先使用)

这是MySQL 8.0官方指定的用户密码修改方式,无需手动处理哈希,服务器会自动根据用户的认证插件生成对应格式的密码哈希:

ALTER USER 'dbusertest'@'%' IDENTIFIED BY 'randomPassword';

如果你的用户需要保留旧版的mysql_native_password认证插件(和5.7保持一致),可以明确指定插件:

ALTER USER 'dbusertest'@'%' IDENTIFIED WITH mysql_native_password BY 'randomPassword';

方案二:使用SET PASSWORD语句(需匹配认证插件)

若你坚持使用SET PASSWORD语法,需先确认用户的认证插件:

SELECT user, host, plugin FROM mysql.user WHERE user = 'dbusertest' AND host = '%';
  • 如果插件是mysql_native_password,可以使用以下语句:
SET PASSWORD FOR 'dbusertest'@'%' = CONCAT('*', UPPER(SHA1(UNHEX(SHA1('randomPassword')))));
  • 如果插件是caching_sha2_password,则无法使用这种旧哈希格式,必须使用方案一的ALTER USER语句直接设置明文密码,由服务器自动生成符合插件要求的哈希。

内容的提问来源于stack exchange,提问作者Shalini Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:43:09