MySQL 8.0默认使用caching_sha2_password而非mysql_native_password,因其强制盐值、5000轮SHA256迭代及RSA加密传输,彻底解决后者无盐哈希、明文协商和易被重放等真实安全漏洞。
caching_sha2_password 不是“推荐用”,而是 MySQL 8.0 的默认认证插件——它取代 mysql_native_password 是因为后者在安全上已不可接受。
mysql_native_password 存储密码的方式是 SHA1(SHA1(password)),没有盐值:
mysql.user 表就能发现哪些账号共用密码 而 caching_sha2_password 强制引入三个硬性防护:
salt,写入 authentication_string 字段前缀 SHA256(salt + password),再迭代 5000 轮 SHA256 allowPublicKeyRetrieval=true)名字里的 “caching” 指服务端内存缓存已成功认证的凭据对,仅用于短时间内的重复连接复用:
sha256_password(都要做 5000 轮 SHA256) 报错 Public Key Retrieval is not allowed 或 Unknown system variable 'caching_sha2_password',通常是因为:
libmysqlclient,无法处理公钥协商 mysqli 和 PDO_MySQL 扩展至今(2026 年)仍未原生支持该插件 真正容易被忽略的点是:这个插件和 SQL 注入完全无关。它只管“你是不是合法用户”,不管“你执行的 SQL 是否危险”。哪怕你用 caching_sha2_password 登录成功,拼接字符串的查询照样被注入。
速看!Apache DolphinScheduler 满足企业刚需,Email 告警设置全解析
AI Agent 接入 Zvec (一):MCP 篇
一行命令搞定驱动安装!MicroPython 开发有了自己的 “PyPI”包管理平台!
如何设置小米r3a路由器的中继模式(小米r3a路由器的中继模式设置方法)
是德科技携手阿里云推出SONiC Scale-up测试标准
紫光同芯参与发布2026年eSIM产业发展研究报告