我想用mysql在mysql中创建一个新用户:
create user 'demo'@'localhost' identified by 'password';
但它返回错误:
您的密码不符合当前的政策要求。
我尝试了很多密码,但他们不能工作。我该如何解决这个问题?
答案 0 :(得分:88)
因为你的密码。您可以使用SHOW VARIABLES LIKE 'validate_password%';
中的mysql
查看密码验证配置指标,也可以将密码策略级别设置为较低,例如:
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
您可以观看此视频:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements - Mysql (Youtube)
答案 1 :(得分:42)
注意:这可能不是一个安全的解决方案。但是,如果您正在开发测试环境,只需要快速修复,甚至不关心安全设置。这是一个快速的解决方案。
当我运行“mysql_secure_installation”并将密码安全级别修改为“中等”时,同样的问题发生在我身上。
我通过运行以下内容来绕过错误:
mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;
请确保在必要时重新安装插件“validate_password”。
答案 2 :(得分:24)
如果您不在乎密码策略是什么。您可以通过发出以下mysql命令将其设置为LOW:
mysql> SET GLOBAL validate_password_policy=LOW;
答案 3 :(得分:11)
运行命令sudo mysql_secure_installation
之后。
sudo mysql
进入mysql提示符。SELECT user,authentication_string,plugin,host FROM mysql.user;
,以检查用户 root 是否具有插件 auth_socket 。uninstall plugin validate_password;
来删除特权
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
务必将 密码 更改为安全密码。注意:请查看此链接https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04以获取更多帮助
答案 4 :(得分:11)
答案 5 :(得分:7)
您必须将MySQL密码策略更改为LOW。
以root用户登录
mysql -u root -p
更改政策
SET GLOBAL validate_password_policy=LOW;
或
SET GLOBAL validate_password_policy=0;
退出
exit
重新启动MySQL服务
sudo service mysqld restart
您必须将MySQL密码策略更改为Low = 0 / Medium = 1 / High = 2。
SET GLOBAL validate_password_policy=0;
SET GLOBAL validate_password_policy=1;
SET GLOBAL validate_password_policy=2;
答案 6 :(得分:4)
对于MySql 8,您可以使用以下脚本:
SET GLOBAL validate_password.LENGTH = 4;
SET GLOBAL validate_password.policy = 0;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.special_char_count = 0;
SET GLOBAL validate_password.check_user_name = 0;
ALTER USER 'user'@'localhost' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
答案 7 :(得分:2)
问题是您的密码与密码验证规则不匹配。您可以按照以下步骤简单地解决问题。
只需在下面的代码中键入即可简单地查看密码验证配置矩阵。
mysql-> SHOW VARIABLES LIKE 'validate_password%';
然后,您可以在矩阵中找到以下具有相应值的变量,您必须在其中检查validate_password_length
,validate_password_number_count
和validate_password_policy
。
检查用于这些变量的值。确保您的validate_password_length
不大于6。您可以使用以下代码将其设置为6。
SET GLOBAL validate_password_length = 6;
然后,您需要将validate_password_number_count
设置为0。请使用以下代码进行操作。
SET GLOBAL validate_password_number_count = 0;
最后,您必须将validate_password_policy
设置为low
。将其设置为Medium
或High
不会允许您使用不太安全的密码。通过以下代码将其设置为low
。
SET GLOBAL validate_password_policy=LOW;
答案 8 :(得分:2)
第1步:检查您的默认身份验证插件
SHOW VARIABLES LIKE 'default_authentication_plugin';
第2步:满足您的密码验证要求
SHOW VARIABLES LIKE 'validate_password%';
第3步:使用正确的密码要求设置用户
CREATE USER '<your_user>'@'localhost' IDENTIFIED WITH '<your_default_auth_plugin>' BY 'password';
答案 9 :(得分:1)
我认为将“ validate_password_policy” 设置为“低” 或卸载“验证密码插件”不是正确的选择。您绝不能损害数据库的安全性(除非您不在乎)。我想知道为什么当您只需选择一个好的密码时,人们甚至会建议这些选项。
为解决此问题,我在mysql中执行以下命令: SHOW VARIABLES LIKE'validate_password%',如@JNevill所建议。我的“ validate_password_policy”连同其他设置都设置为“中”。以下是其执行过程的屏幕截图:Validate Password Policy
结果不言自明。对于有效的密码(当“密码策略”设置为“中”时):
因此,必须遵守有效的密码政策。上述规则的有效密码示例如下:
您可以选择符合政策的任何组合。
对于其他“ validate_password_policy” ,您可以简单地查看不同选项的值并相应地选择密码(我没有尝试过“ HIGH” )。
答案 10 :(得分:1)
我遇到了同样的问题,答案就在您的面前,还记得当您在安装mysql之类的
时运行脚本 sudo mysql_secure_installation
您在某处选择了想要选择
密码验证策略分为三个级别:
低长度> = 8 MEDIUM长度> = 8,数字,大小写混合和特殊字符 长度> = 8,数字,大小写混合,特殊字符和字典文件
请输入0 = LOW,1 = MEDIUM和2 = STRONG:
您必须输入相同策略的密码
以下是您的密码示例示例:
对于类型0:abcdabcd
对于类型1:abcd1234
对于类型2:ancd@1234
答案 11 :(得分:1)
设置满足7个MySql验证规则的密码
例如:-d_VX>N("xn_BrD2y
使验证标准更简单将解决问题
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
但是建议使用强密码是正确的解决方案
答案 12 :(得分:1)
类似于“ validate_password%”的显示变量;
mysql> SET GLOBAL validate_password.length = 6;
mysql> SET GLOBAL validate_password.number_count = 0;
mysql> SET GLOBAL validate_password.policy = LOW;
类似于“ validate_password%”的显示变量;
答案 13 :(得分:0)
对于Laravel用户在MySQL 8.0.x中遇到此问题,请添加
'modes'=> [
'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ENGINE_SUBSTITUTION',
],
到您的database.php文件,如下所示:
// database.php
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env( 'DB_HOST', '127.0.0.1' ),
'port' => env( 'DB_PORT', '3306' ),
'database' => env( 'DB_DATABASE', 'forge' ),
'username' => env( 'DB_USERNAME', 'forge' ),
'password' => env( 'DB_PASSWORD', '' ),
'unix_socket' => env( 'DB_SOCKET', '' ),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
'modes' => [
'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ENGINE_SUBSTITUTION',
],
],
],
它为我修复了。
答案 14 :(得分:0)
此错误消息与表中存储的密码无关。如果您键入(在SQL控制台上),也会发生这种情况
“选择密码('123456789')”
或者
“选择密码('A123456789')”
或者
“选择密码('A!123456789')”
如果您输入
“选择密码('A!a123456789')”
然后它将起作用。只需使用大小写字母,特殊字符和数字来创建密码。
您可以在my.cnf中禁用这些检查,但是这样会带来安全风险!
在[mysqld]中添加:
validate_password_policy=LOW
validate_password_special_char_count=0
validate_password_length=0
validate_password_mixed_case_count=0
validate_password_number_count=0
答案 15 :(得分:0)
无法在ubuntu全新安装的mysqld上为我工作,必须将此添加到/etc/mysql/mysql.conf.d/mysqld.cnf或服务器无法启动(猜测插件未启动)当我只是在没有plugin-load-add指令的情况下将其添加到正确的时间加载
plugin-load-add=validate_password.so
validate_password_policy=LOW
validate_password_length=8
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_special_char_count=0
答案 16 :(得分:0)
mysql> SET GLOBAL validate_password.policy = 0;
答案 17 :(得分:0)
在某些时候,找到快速解决方案非常重要。但是,如果您可以避免降低密码限制,则可以避免将来头疼。
下一个链接来自官方文档https://dev.mysql.com/doc/refman/5.6/en/validate-password.html,在该文档中他们公开了一个与您的示例完全相同的示例,并由他们解决。
您仅有的一个问题是您的密码不够强,无法满足实际的最低要求(不建议删除)。因此,您可以尝试使用示例中所示的其他密码。
答案 18 :(得分:0)
如果mysql托管在aws上,则只需卸载插件即可。来自下面的root用户射击
UNINSTALL PLUGIN validate_password;
答案 19 :(得分:0)
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
#
# * Basic Settings
#
..
..
..
validate_password.policy = LOW # <== this line
..
..
# IMPORTANT notes:
# - you can add more policy commands each by your needs.
# - notice the "." before "policy" , in some mysql versions is "_" , so be aware of that.
保存文件并重启mysql服务器:sudo service mysql restart
连接并检查配置的持久性:
sudo mysql -u your_username -p
show variables like "validate_pass%";
结果应该是这样的:
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 6 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 0 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
我希望这可以帮助人们。