首页 > 解决方案 > 在 mysql 上从拉丁语转换为 UTF-8 - 具有特殊字符的密码会发生什么?

问题描述

我的输入表单和 mysql 数据库是用拉丁文编码的

当我完全更改为 UTF-8 时,我无法更改数据库中的密码(它们是编码的)。我假设,如果人们在密码中使用特殊字符,并且新的登录表单是 UTF-8,他们将被锁定。正确的?(例如,如果他们使用和 ä 字母)

解决方案?我可能会尝试根据他们输入的拉丁语转换仔细检查他们的登录密码(当他们尝试登录时)......如果匹配,我会使用 UTF8 输入再次自动重新设置他们的密码。

这是要走的路吗?

标签: mysqlutf-8passwordsdata-conversion

解决方案


mysql.user是你要问的?还是这是一些较新的插件?

该表中的密码不是实际密码,而是通过单向加密输入,然后以与 ascii、latin1 和 utf8 兼容的文本存储。不要担心该表中的那一列。

如果您自己进行密码管理,那么您已经遗漏了一些信息。你连接为 utf8 还是 latin1?让我们看看SHOW CREATE TABLE。您是否在不加密的情况下存储 pwd(因此更容易受到攻击)?

你是如何转换你的表格的?有几种错误的方法。我建议您现在检查它们,以免混乱变得更糟。在某个表中存储一个非 ascii 字符,然后执行SELECT col, HEX(col) FROM ...; 我们可以看到它是否被正确存储,而不是“双重编码”或其他讨厌的东西。更多讨论


推荐阅读