如何验证 mysql 中的密码数据

How to validate password data in mysql

  1. 我创建了一个 'user' table 来存储用户名和密码。
  2. 使用此查询插入用户详细信息(对于密码,使用 PASSWORD() 函数):

INSERT INTO user (username, password) VALUES ('testuser3', PASSWORD('helloworld'));

  1. 现在要验证用户,使用以下查询:

SELECT * 来自用户 WHERE 用户名 = 'testuser3' AND 密码 = PASSWORD('helloworld');

  1. 想法是,如果SELECT查询return一行,则用户通过身份验证,否则不通过。但是我得到的响应是 'Empty set',即使用户名和密码是正确的。

那么我必须在此 SELECT 查询中更新什么才能获得所需的结果?

注意:这个问题对于问题中提到的场景非常特殊。要实际存储密码,请使用加盐哈希概念。更多内容可以在 O. Jones 和 martinstoeckli

的下方评论中找到

找到解决方法。我使用此查询创建了 table:

CREATE TABLE user (id INTEGER NOT NULL AUTO_INCREMENT, username VARCHAR(32), password VARCHAR(64), PRIMARY KEY (id));

当我将用户名和密码的长度增加到 128 时,查询有效。