我想在MySQL中创建一个新用户,语法如下:
create user 'demo'@'localhost' identified by 'password';
但是它会返回一个错误:
您的密码不符合当前策略要求。
我试过很多密码,但都没用。我该如何解决这个问题?
我想在MySQL中创建一个新用户,语法如下:
create user 'demo'@'localhost' identified by 'password';
但是它会返回一个错误:
您的密码不符合当前策略要求。
我试过很多密码,但都没用。我该如何解决这个问题?
当前回答
SHOW VARIABLES LIKE 'validate_password%';
mysql> SET GLOBAL validate_password.length = 6;
mysql> SET GLOBAL validate_password.number_count = 0;
mysql> SET GLOBAL validate_password.policy=LOW;
SHOW VARIABLES LIKE 'validate_password%';
其他回答
用mysql应用这些变化后,洪阮回答 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 server: sudo service mysql restart 连接并检查配置的持久性: Sudo mysql -u your_username -p 显示像"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 |
+--------------------------------------+-------+
我希望这能帮助到人们。
编辑:感谢@ahmednawazbutt:不要忘记FLUSH特权;
最好的选择是通过你的密码策略,并设置相应的密码。您可以通过运行以下命令检查现有的密码验证插件系统变量的值
mysql> SHOW VARIABLES LIKE 'validate_password%';
通过操作系统变量来减少安全策略从来都不是一个好做法。
您可以从官方文档中阅读关于每个变量及其用例的详细信息,参考链接MySQL 5.6 MySQL 5.7 MySQL 8.0
此错误消息与表中存储的密码无关。如果键入(在SQL控制台上),也会出现这种情况
“选择密码(“123456789”)”
或者,如果
“select密码(’A123456789’)”
或者,如果
“select 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
在我的例子中,当有一个错误的引用时,错误就出现了:
GRANT所有database_name。* ' user1 ' @'8.10.12.2';(用户名周围的单引号错误)
vs
GRANT所有database_name。* 'user1'@'8.10.12.2';(正确)
请设置满足7条MySql验证规则的密码
例如:- d_VX>N(“xn_BrD2y
让验证标准更简单一点可以解决这个问题
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
但建议使用强密码是正确的解决方案