我想在MySQL中创建一个新用户,语法如下:
create user 'demo'@'localhost' identified by 'password';
但是它会返回一个错误:
您的密码不符合当前策略要求。
我试过很多密码,但都没用。我该如何解决这个问题?
我想在MySQL中创建一个新用户,语法如下:
create user 'demo'@'localhost' identified by 'password';
但是它会返回一个错误:
您的密码不符合当前策略要求。
我试过很多密码,但都没用。我该如何解决这个问题?
当前回答
在我看来,设置“validate_password_policy”为“low”或卸载“验证密码插件”是不正确的事情。永远不要牺牲数据库的安全性(除非你真的不在乎)。我想知道为什么人们甚至建议这些选项,当你可以选择一个好的密码。
为了克服这个问题,我在mysql中执行了以下命令:根据@JNevill的建议,SHOW VARIABLES LIKE 'validate_password%'。我的“validate_password_policy”被设置为Medium,还有其他一些东西。以下是其执行的截图:验证密码策略
结果是不言自明的。对于有效密码(当“密码策略”为“中”时):
密码长度至少为8个字符 混合大小写计数为1(至少1个小写字母和1个大写字母) Number count是1 最小特殊字符数为1
因此,有效的密码必须遵守策略。以上规则的有效密码示例可能是:
Student123@ NINZAcoder 100美元 点demoPass #
您可以选择任何组合,只要它满足策略。
对于其他“validate_password_policy”,您可以简单地查看不同选项的值并相应地选择您的密码(我没有尝试过“STRONG”)。
https://dev.mysql.com/doc/refman/5.6/en/validate-password-options-variables.html
其他回答
请设置满足7条MySql验证规则的密码
例如:- d_VX>N(“xn_BrD2y
让验证标准更简单一点可以解决这个问题
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
但建议使用强密码是正确的解决方案
MySQL 8*
SET GLOBAL validate_password.policy=LOW
参考链接解释政策-点击这里
如果你想设置一个空白密码。然后在MySQL客户端运行以下查询:
SET GLOBAL validate_password.check_user_name = No;
SET GLOBAL validate_password.dictionary_file = '';
SET GLOBAL validate_password.length = 0;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.special_char_count = 0;
输出应该是这样的:
SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 0 |
| validate_password.mixed_case_count | 0 |
| validate_password.number_count | 0 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 0 |
+--------------------------------------+-------+
然后,您可以使用以下查询更新您的空白密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
用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特权;
执行sudo mysql_secure_installation. sh命令后。
2 .执行sudo mysql命令,进入“mysql”界面。 运行SELECT user,authentication_string,plugin,host FROM mysql.user;检查root用户是否有插件auth_socket。 然后运行卸载插件validate_password;在运行之前删除特权 this 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以获得更多帮助