17

我需要在我的 mac 上的新 MySQL 中创建一个具有六个字符密码的用户。我知道 5.7 中的最低设置只允许八个字符。有没有办法解决这个问题?

我输入CREATE USER 'newsier'@'localhost' IDENTIFIED BY 'special'

它输出错误

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
4

7 回答 7

40

首先,您通过以下方式登录mysql -u root -p并检查当前的政策规则:

# SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 5      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

然后,您可以随意更改上述任何变量:

# SET GLOBAL validate_password_length = 5;
# SET GLOBAL validate_password_number_count = 0;
# SET GLOBAL validate_password_mixed_case_count = 0;
# SET GLOBAL validate_password_special_char_count = 0;

最后,您可以创建一个数据库和一个使用更简单的密码访问它的用户:

# CREATE DATABASE test1;
# GRANT ALL PRIVILEGES ON test1.* TO user1@localhost IDENTIFIED BY "pass1";
# FLUSH PRIVILEGES;

之后,您可以mysql -u user1 -p test1使用密码登录pass1

于 2016-05-31T16:51:27.993 回答
9

您正在使用密码验证插件。默认情况下,它只允许 8 个字符和更长的密码。因为它无法检查散列的值,所以@RiggsFolly 是正确的,预散列密码将起作用。

但是,如果要更改 options,则需要设置validate_password_length系统变量的值。您可以在配置文件中执行此操作,或者:

SET GLOBAL validate_password_length=6;
于 2016-01-21T00:59:21.793 回答
6

MySQL 5.7+默认有一个密码验证系统。如果您不想严格遵守该策略并且需要分配自己的策略,那么只需禁用密码验证并重新启动mysqld进程。

编辑my.cnf文件:

vi /etc/my.cnf

[mysqld]

validate-password=off

保存文件,然后重新启动该过程

sudo service mysqld restart
or
systemctl restart mysqld

然后使用以下方法更改 Root 密码,并按照不会为 Root 密码引发异常的步骤操作。

mysql_secure_installation
or
/usr/bin/mysql_secure_installation

如果您是第一次安装并想知道临时密码,请使用以下方法查找第一次密码

 grep 'temporary password' /var/log/mysqld.log

在下面的评论框中让我知道您对此的评论。

于 2016-09-29T10:44:11.133 回答
4

通过运行以下命令,可以完全禁用似乎过于严格的密码“插件”: uninstall plugin validate_password

如果您再次需要它,您可以通过以下方式重新打开它: INSTALL PLUGIN validate_password SONAME 'validate_password.so'

或者,您可以禁用它,设置密码并重新启用它:

uninstall plugin validate_password;
CREATE USER 'newsier'@'localhost' IDENTIFIED BY 'special';
INSTALL PLUGIN validate_password SONAME 'validate_password.so';

进一步阅读:

于 2017-03-10T20:39:58.837 回答
3

通过以下方式检查当前密码策略规则

SHOW VARIABLES LIKE 'validate_password%';

现在设置这些变量的新值:

SET GLOBAL validate_password_length = 6 ; // that you like
SET GLOBAL validate_password_policy = LOW ;
于 2017-08-12T17:43:53.397 回答
2

我相信您可以通过使用这样的预散列密码来解决它:-

CREATE USER 'newsier'@'localhost' IDENTIFIED WITH mysql_native_password
       AS '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';

但这确实意味着您需要special正确散列,然后才能真正设置密码,然后您可以使用纯文本版本。

于 2016-01-21T00:40:08.123 回答
-2

这可能会有所帮助:

GRANT ALL ON wordpress.* TO 'user'@'localhost' IDENTIFIED WITH mysql_native_password AS'yourpassword';

于 2017-07-06T10:59:34.177 回答