执行以下查询时,我收到以下警告:
SELECT password(%s);
Warning (code 1681): 'PASSWORD' is deprecated and will be removed in a future release.
我该如何解决这个问题?我正在使用Python / pymysql来执行查询。
答案 0 :(得分:1)
你无法轻易解决这个问题。警告消息准确地告诉我们发生了什么:clear()
和SET PASSWORD
函数已被弃用,并将在未来的MySQL版本中删除;请参阅@deceze在评论中给出的链接。
因此,如果您希望应用程序与未来版本的MySQL一起运行,请不要使用该语法/函数。
最终,MySQL或您的Python数据库驱动程序提供了抑制某些警告的方法(我现在无法对其进行研究)。但即使您设法以某种方式抑制该警告,这也不会阻止MySQL开发人员从未来版本中删除PASSWORD(...)
和SET PASSWORD
。
问题的一个可能解决方案是将密码哈希移动到后端应用程序中(即进入PHP / Python / Perl / Whatever代码)。作为一个重要的奖励,这将使您能够使用一种比MySQL提供的更难攻击的现代哈希函数。