password存储varchar多大
时间: 2023-08-11 16:08:34 浏览: 50
一般来说,密码存储的 `varchar` 大小应该至少为 60,这是因为常见的密码哈希算法(如 bcrypt、PBKDF2、scrypt 等)生成的哈希值长度通常为 60 个字符或更多。如果 `varchar` 大小不足,哈希值可能被截断,从而导致密码验证失败。另外,为了安全起见,密码应该通过哈希算法进行加密存储,而不是以明文形式存储。
相关问题
解释`password` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL
这是一个MySQL数据库中的列定义,具体解释如下:
- `password`: 列名,表示该列存储的数据是密码。
- `varchar(40)`: 数据类型为变长字符串,最大长度为40个字符。
- `CHARACTER SET utf8mb4`: 表示该列使用的字符集为utf8mb4,即支持4字节的Unicode字符集。
- `COLLATE utf8mb4_general_ci`: 表示该列使用的排序规则是utf8mb4_general_ci,即不区分大小写的一般排序规则。
- `NULL`: 表示该列允许存储空值。
DELIMITER ;; CREATE DEFINER='root@'localhost’ PROCEDURE update_reader_password'(in reader_name_in varchar(20), in password in varchar(35))begin update readers set password = password in where binary reader name = reader name in; end ;; DELIMITER ;
这是一段用于更新读者密码的存储过程的代码。它接受两个输入参数:读者姓名和新的密码。其中,DEFINER='root@'localhost' 表示这个存储过程是由 root 用户在本地主机上创建的。
存储过程的主体部分只包含了一个 SQL 语句,用于更新 readers 表中对应读者的密码。这个 SQL 语句使用了 WHERE 子句来指定要更新的记录,其中 binary reader name = reader name in 表示要匹配读者姓名,注意这里也存在语法错误,应该是 reader_name_in。
另外,在这个 SQL 语句中,使用了输入参数 password,它的值被设置为 password in。这是为了避免与 MySQL 中的保留关键字 password 冲突,使用了一个后缀“_in”。
需要注意的是,这段代码中存在一些语法错误,例如 DELIMITER 后面的分隔符应该是两个分号,而不是一个。此外,存储过程的结束标记也应该是两个分号,而不是一个。最后,SQL 语句中的 reader name 和 password 也应该使用下划线连接。