网站搜索

如何在 Linux 中修复“MySQL ERROR 1819 (HY000):”


当使用相对较弱的密码创建MySQL用户时,您可能会遇到错误“MySQL ERROR 1819 (HY000):您的密码不满足当前策略要求”。从技术上讲,这不是错误,而是通知您使用的密码不符合建议的密码策略要求。

换句话说,您使用的密码很容易被猜测或暴力破解。内置的安全机制阻止用户创建弱密码,这可能使您的数据库容易遭到破坏。

例如,我在创建用户时遇到错误,如图所示

mysql> create user ‘tecmint’@’localhost’ IDENTIFIED BY ‘mypassword’;

毫无疑问,密码极其脆弱,可能会带来安全风险。

如何解决 Linux 中的 MySQL 错误 1819 (HY000)

MySQL 数据库附带一个 validate_password 插件,启用该插件后,会强制执行密码验证策略。该插件强制执行 3 级密码验证策略。

  • :允许用户设置 8 个或更少字符的密码。
  • MEDIUM:允许用户设置 8 个或更少字符、混合大小写和特殊字符的密码。
  • STRONG:允许用户设置具有中级密码的所有属性并包含字典文件的密码。

默认情况下,密码策略设置为MEDIUM。您可以通过执行以下命令来确认密码策略级别:

SHOW VARIABLES LIKE 'validate_password%';

如果您运行该命令并获得输出空集,则该插件尚未启用。

要启用 validate_password 插件,请运行以下命令。

mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';
mysql> install plugin validate_password soname 'validate_password.so';

要确认插件已激活,请运行命令。

mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';

您应该得到如下所示的输出:

要解决此问题,您需要将密码验证策略设置为最低级别。我知道这听起来有悖常理,因为它创建了设置弱密码的途径,最终可能导致您的数据库被黑客入侵。

然而,如果你仍然坚持按自己的方式行事,你可以这样做。

如何更改 MySQL 密码验证策略

要解决 MySQL ERROR 1819 (HY000) 错误,请设置较低的密码验证策略,如下所示。

mysql> SET GLOBAL validate_password_policy=LOW;
OR
mysql> SET GLOBAL validate_password_policy=0;

此后您可以确认密码验证策略级别。

SHOW VARIABLES LIKE 'validate_password%';

现在您可以继续并根据您的意愿分配一个相对较弱的密码。

mysql> create user ‘tecmint’@’localhost’ IDENTIFIED BY ‘mypassword’;

要恢复到“MEDIUM”密码策略级别,只需调用以下命令:

mysql> SET GLOBAL validate_password_policy=MEDIUM;
结论

就我个人而言,出于显而易见的原因,我不建议设置较低级别的密码策略。无论是普通用户还是数据库用户,建议始终设置一个强MySQL密码,密码长度超过8个字符,混合大写、小写、数字和特殊字符。

本指南是为那些想知道如何解决此类错误的人提供的,否则,始终建议设置强密码。