我想在MySQL中创建一个新用户,语法如下:
create user 'demo'@'localhost' identified by 'password';
但是它会返回一个错误:
您的密码不符合当前策略要求。
我试过很多密码,但都没用。我该如何解决这个问题?
我想在MySQL中创建一个新用户,语法如下:
create user 'demo'@'localhost' identified by 'password';
但是它会返回一个错误:
您的密码不符合当前策略要求。
我试过很多密码,但都没用。我该如何解决这个问题?
当前回答
您必须将MySQL密码策略更改为LOW。
以root用户登录
mysql -u root -p
改变政策
SET GLOBAL validate_password_policy=LOW;
or
SET GLOBAL validate_password_policy=0;
exit
exit
重启MySQL服务
sudo service mysql 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;
其他回答
如果你想设置一个空白密码。然后在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 '';
在我的例子中,当有一个错误的引用时,错误就出现了:
GRANT所有database_name。* ' user1 ' @'8.10.12.2';(用户名周围的单引号错误)
vs
GRANT所有database_name。* 'user1'@'8.10.12.2';(正确)
如果mysql托管在aws上,只需卸载插件。从根用户火下面
UNINSTALL PLUGIN validate_password;
对我来说,在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
对于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',
],
],
],
它帮我解决了问题。