mysql - 在 mysql 上从拉丁语转换为 UTF-8 - 具有特殊字符的密码会发生什么?
问题描述
我的输入表单和 mysql 数据库是用拉丁文编码的
当我完全更改为 UTF-8 时,我无法更改数据库中的密码(它们是编码的)。我假设,如果人们在密码中使用特殊字符,并且新的登录表单是 UTF-8,他们将被锁定。正确的?(例如,如果他们使用和 ä 字母)
解决方案?我可能会尝试根据他们输入的拉丁语转换仔细检查他们的登录密码(当他们尝试登录时)......如果匹配,我会使用 UTF8 输入再次自动重新设置他们的密码。
这是要走的路吗?
解决方案
表mysql.user
是你要问的?还是这是一些较新的插件?
该表中的密码不是实际密码,而是通过单向加密输入,然后以与 ascii、latin1 和 utf8 兼容的文本存储。不要担心该表中的那一列。
如果您自己进行密码管理,那么您已经遗漏了一些信息。你连接为 utf8 还是 latin1?让我们看看SHOW CREATE TABLE
。您是否在不加密的情况下存储 pwd(因此更容易受到攻击)?
你是如何转换你的表格的?有几种错误的方法。我建议您现在检查它们,以免混乱变得更糟。在某个表中存储一个非 ascii 字符,然后执行SELECT col, HEX(col) FROM ...
; 我们可以看到它是否被正确存储,而不是“双重编码”或其他讨厌的东西。更多讨论
推荐阅读
- node.js - if 语句 socket io mongodb nodejs
- python - Python、Selenium 和 Chromedriver - 使用 find_element_by_id 的无限循环导致 CPU 问题
- c# - 比较相同枚举类型的对象的枚举
- c# - 通过实体框架中的表名检索表列
- node.js - AWS 使用 JavascriptServices(AspnetCore.NodeServices) 部署 Asp.net-Core 应用程序
- string - 如何用 Fish 计算符号而不是字符串长度?
- perl - 通过 SOAP 访问特定的 OTRS 动态字段值
- caching - Does redis itself have cache?
- swift - 隐藏字段未以 Eureka swift 形式提交其值
- javascript - Deleting multiple child components from parent component in react