MySQL 8 不支持 PASSWORD() 函数的解决办法
最近新安装了 MySQL 8 的版本,一份老代码里某句 SQL:
SELECT * FROM t_user
WHERE uid = 'u0001'
AND pwd = PASSWORD('123456')
报如下错误:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
原因是 PASSWORD()
函数 在 v5.7.5 之后的版本中已被弃用 查看官方说明
解决方案:
将:
PASSWORD('123456')
替换为:
CONCAT('*', UPPER(SHA1(UNHEX(SHA1('123456')))))
这两种方式加密出来的字符串是一样的。
但无论如何,都不应该使用 PASSWORD()
来作为密码加密函数。MySQL 功能手册里一直在声明,它仅供 MySQL 的系统表使用。
参考资料 Reference :
Password Hashing in MySQL版权声明:[自由转载-注明出处-非商用-非衍生] (知识共享许可协议)