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

如何使用BCrypt加密密码进行MySQL用户创建与密码修改?

使用BCrypt加密密码与MySQL用户密码设置问题

一、通过Spring Boot Client生成BCrypt密码

可以借助Spring Boot Client的命令行工具生成BCrypt加密后的密码:

$ ./spring encodepassword superman
{bcrypt}$2a$10$3bQEwIsu2SxDxq1xafag6uH5C3TqacyI2xtQcxJqK9xyJrxgTUPkO

二、MySQL 8.4.4全新安装后root密码情况

在Linux不同发行版中,root用户初始密码的设置逻辑有差异:

  • Debian/Ubuntu系统:需手动设置明文密码
  • Fedora系统:会自动生成明文密码

三、常规修改MySQL root密码的方式

修改root密码通常需要先登录MySQL,再执行SQL语句:

mysql -u root -p

登录后执行密码修改命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'superman';

这种方式使用的是明文密码。

四、关于直接使用BCrypt哈希值设置密码的疑问

现有两个疑问:

  1. 是否可以直接用已生成的BCrypt哈希值修改用户密码,比如:
ALTER USER 'root'@'localhost' IDENTIFIED BY bcrypt('$2a$10$3bQEwIsu2SxDxq1xafag6uH5C3TqacyI2xtQcxJqK9xyJrxgTUPkO');
  1. 创建新用户时,是否支持类似操作,比如:
CREATE USER 'tron'@'localhost' IDENTIFIED BY bcrypt('$2a$10...');

解答

MySQL本身不支持直接使用bcrypt()函数设置用户密码,具体原因和替代方案如下:

  1. MySQL默认的用户认证插件(如caching_sha2_password、mysql_native_password)不兼容BCrypt哈希格式,且MySQL自身没有内置BCrypt密码处理逻辑。
  2. 若要使用自定义加密后的密码设置MySQL用户,需满足两个前提:
    • 确保MySQL使用的认证插件支持对应哈希格式(BCrypt不在默认支持范围内)
    • 直接传入符合插件要求的哈希值并带上格式标识,比如针对mysql_native_password插件的写法:
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password AS '*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4';
      
  3. 若想在业务中使用BCrypt加密密码,更合理的做法是:
    • 在应用层(比如你的Spring Boot项目)完成BCrypt加密,仅将哈希值存储到数据库,登录时将用户输入的密码加密后与存储的哈希值比对。
    • 自定义MySQL认证插件支持BCrypt需要复杂的开发和配置,不适合普通场景。

总结:你尝试的IDENTIFIED BY bcrypt('哈希值')写法在MySQL中无效,MySQL不识别bcrypt()函数,也不直接支持用BCrypt哈希设置用户密码,创建新用户时同理无法实现。

内容的提问来源于stack exchange,提问作者Manuel Jordan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:26:04