MySQL 5.7中使用PASSWORD()函数出现语法警告问题咨询
嗨,别担心英文不好的问题,咱们直接聊你遇到的MySQL警告问题~
关于MySQL 5.7中使用PASSWORD()函数触发警告的原因
你的查询语句能正常运行但弹出警告,核心原因其实是:**PASSWORD()函数在MySQL 5.7版本里已经被标记为「废弃(deprecated)」**了。
虽然这个函数暂时还能工作,但MySQL官方早就不推荐使用它了,而且会在后续的新版本里彻底移除它。数据库弹出警告就是在提醒你:这个函数快淘汰了,赶紧换更合适的替代方案吧。
为什么PASSWORD()会被废弃?
PASSWORD()是早期MySQL用来生成原生密码哈希的老函数,随着安全标准的提升,官方推出了更安全的哈希函数(比如SHA2()系列),旧的PASSWORD()因为安全性和兼容性问题,就被逐步淘汰了。
给你的替代方案
如果你是要验证用户密码,推荐这么做:
- 存储用户密码时,用
SHA2('用户输入的密码', 256)这类更安全的哈希函数生成哈希值,再存入数据库 - 验证密码时,对比输入密码的哈希值和数据库里存的哈希值,比如:
SELECT COUNT(*) FROM user_info WHERE user_id = 'myid' AND user_pw = SHA2('mypassword', 256);
另外,更专业的做法是在应用层处理密码哈希(比如用bcrypt、Argon2这类目前公认安全的算法),而不是在SQL语句里直接处理,这样能进一步提升安全性哦。
内容的提问来源于stack exchange,提问作者세알못
相关产品推荐
相关产品推荐

