我想在MySQL中创建一个新用户,语法如下:
create user 'demo'@'localhost' identified by 'password';
但是它会返回一个错误:
您的密码不符合当前策略要求。
我试过很多密码,但都没用。我该如何解决这个问题?
我想在MySQL中创建一个新用户,语法如下:
create user 'demo'@'localhost' identified by 'password';
但是它会返回一个错误:
您的密码不符合当前策略要求。
我试过很多密码,但都没用。我该如何解决这个问题?
当前回答
对于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',
],
],
],
它帮我解决了问题。
其他回答
注意:这可能不是一个安全的解决方案。但是如果您正在测试环境中工作,只需要快速修复,甚至不关心安全设置。这是一个快速的解决方案。
当我运行“mysql_secure_installation”并将密码安全级别修改为“中等”时,同样的问题发生在我身上。
我通过运行以下程序绕过了这个错误:
mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;
如果需要,请确保重新安装插件“validate_password”。
在我的例子中,当有一个错误的引用时,错误就出现了:
GRANT所有database_name。* ' user1 ' @'8.10.12.2';(用户名周围的单引号错误)
vs
GRANT所有database_name。* 'user1'@'8.10.12.2';(正确)
我有同样的问题,答案就在你面前,记得当你在安装mysql的时候运行脚本
sudo mysql_secure_installation
您可以在某个地方选择想要的密码类型
密码验证策略有三种级别:
LOW长度>= 8 中等长度>= 8,数字,混合大小写,特殊字符 STRONG长度>= 8,数字,混合大小写,特殊字符和字典文件
请输入0 = LOW, 1 = MEDIUM, 2 = STRONG:
你必须给相同的策略设置密码
下面是一些密码示例: 对于类型0:abcdabcd 类型1:abcd1234 类型2:ancd@1234
对于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',
],
],
],
它帮我解决了问题。
用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特权;