mysql 无法授予用户权限,出现错误:ERROR 1819 (HY000): Your password does not meet the current policy requirements

Posted

技术标签:

【中文标题】mysql 无法授予用户权限,出现错误:ERROR 1819 (HY000): Your password does not meet the current policy requirements【英文标题】:mysql cannot grant privilege to user, getting error: ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 【发布时间】:2016-10-12 06:52:52 【问题描述】:

我正在将一个新应用程序迁移到包含 mysql 数据库的生产环境。

尝试使用命令授予所需权限时:

GRANT ALTER,CREATE ON `MyDB`.`*` to `ThisUser`@`*` ;

我收到错误消息:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

而这一点,而密码(root 用户以及 ThisUser 的)完全满足当前政策:

密码长度在8个字符以上, 它们包括大写和小写,以及数字和特殊字符(如“!”、“@”、“$”等)。

我尝试将validate_password_policy 设置为LOW,但也没有用。

谁能解释一下问题是什么以及如何解决?

谢谢。

【问题讨论】:

您是否尝试过使用引号而不是文档示例中的反引号:dev.mysql.com/doc/refman/5.7/en/grant.html 是的,它声称命令中有语法错误。 也许您在创建所谓的存在用户后更改了策略。见this,如SET PASSWORD FOR 'bob'@'%.example.org' = PASSWORD('auth_string'); ...注意,我不习惯`*`部分,而是'%'。实际上,我会使用单引号。不知道你为什么使用` 比你@Drew 为你的 cmets。我使用 ` 的原因是普通引号会导致语法错误(不知道为什么)。至于您问题的第一部分,我也尝试更改用户的密码,但没有积极的结果。无论如何,我不明白为什么我会收到这样的错误消息,因为密码在 paranoiac 区域内(类似于A@x@ffrt6781,它肯定符合策略)。 查看我的回答here,如果它与您刚才提到的任何其他内容有关。请记住,当您从一种环境转到另一种环境时,转义序列可能会发生变化。就像我主要从 c# 到 mysql 一样,以及其他来自“使用 cron 在这里工作失败”等。例如,cron 和 bash 有它们自己的转义序列的细微差别,需要调整。 【参考方案1】:

要解决此问题,请更改 validate_password_policy 值: ERROR 1819 (HY000):您的密码不符合当前政策要求:

$ mysql -u root -p
mysql> SET GLOBAL validate_password_policy=LOW;

并向您的用户授予权限:

mysql> grant all privileges on DB_NAME.* to 'USER_NAME'@'localhost' identified by 'USER_PASS';
mysql> FLUSH PRIVILEGES;
mysql> exit
$ sudo service mysql reload
$ brew services restart mysql

【讨论】:

工作就像一个魅力! ;)【参考方案2】:

对我来说,当我在 GRANT 查询中添加 IDENTIFIED BY 子句时,它会起作用。当您还没有将用户添加到 mysql 时,您需要使用 IDENTIFY BY 子句。

GRANT ALTER,CREATE ON MyDB.* to 'UserName'@'%' IDENTIFIED BY 'UserPassword';

【讨论】:

【参考方案3】:

最终,该问题与here 中描述的用户的某些幻像定义有关。

【讨论】:

【参考方案4】:

当您更改了用户主机或密码等某些字段但忘记刷新权限时,有时会发生此错误。 所以试试:

mysql>flush privileges;

【讨论】:

【参考方案5】:

问题是由于您的密码和服务器密码策略之间的策略不同,您需要做的是重置服务器的密码策略以匹配您的服务器的密码。键入以下命令以访问密码策略插件

        Sudo MySQL
        msql> SHOW VARIABLES LIKE 'validate_password%';  

此命令应将您带到包含 MySQL 服务器密码策略的表。现在您需要在一张纸上写下您的密码并重置服务器密码策略以匹配您的密码。在以下命令中输入。

          MySQL> SET GLOBAL validate_password_length = 5; ( this should be according to the length of your password)
          MySQL> SET GLOBAL validate_number_count = 0;
          MySQL> SET GLOBAL validate_password.policy =LOW;
          MySQL> SET GLOBAL validate_password_special_char_count = 0;

请注意,您可以更改其他策略以满足您当前的密码需求。 如果您使用密码生成器,最好一起删除密码插件,如果您想删除所有密码策略,请使用以下命令。 MySQL> 卸载插件 validate_password;

【讨论】:

【参考方案6】:

我只能通过首先添加phpmyadmin 数据库和用户,然后运行安装过程并在那里为phpmyadmin 用户输入相同的密码来解决这个问题。不幸的是,没有设置任何 apache 配置文件。我正在从 amazon linux 2 切换到 ubuntu。

【讨论】:

以上是关于mysql 无法授予用户权限,出现错误:ERROR 1819 (HY000): Your password does not meet the current policy requirements的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 8.0 中授予 root 用户所有权限

尽管没有超级用户,如何在 MYSQL 中向(root)用户授予超级权限?

MySQL 授予普通用户PROCESS权限

mysql:在 information_schema 上的访问被拒绝

ORACLE - 已授予创建过程但无法创建过程

Spring boot - 尝试从 mySQL DB 验证用户 - 需要授予权限的文本表示