安裝完Mysql也進行了第一次初始化密碼以及修改密碼規則(請參考文章),但是我想后續再改密碼,出現了下面幾個問題:
#SQL語句錯誤問題 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near '('12345678') WHERE user = 'root'' at line 1 #密碼策略問題 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
一、SQL語句錯誤問題
在網上找了很多的設置密碼的語句,發現都不適合,后來才發現,是我在設置密碼規則時動了手腳,要按照密碼規則設置的執行語句修改密碼才可以(文章內容剛剛在上面文字發了鏈接,可以參考文章里的“修改密碼規則”那塊內容)
言歸正傳,下面為網上搜的一些更新密碼的語句,由於不適合我的密碼規則,所以用不了,但不一定其他人用不了,先在此記錄下來:
UPDATE user SET Password = PASSWORD('12345678') WHERE user = 'root'; SET PASSWORD FOR 'root'@'localhost' = PASSWORD(123456);
下面是我的密碼規則,更新密碼語句,執行下面的語句就不報上面的語法錯誤了:
#下面兩種都可以修改密碼 ALTER user 'root'@'localhost' IDENTIFIED BY '12345678'; #或 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
二、密碼策略問題
當我執行下面這兩種語句時,報:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements密碼策略問題
ALTER user 'root'@'localhost' IDENTIFIED BY '12345678'; #或 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
后經幫助查到一篇文章:《ERROR 1819 (HY000): Your password does not satisfy the current policy requirements》解決此問題。
解決辦法:
先登錄數據庫,執行下面語句:
mysql -u root -p
password:xxx
1、查看 mysql 初始的密碼策略,
輸入下面語句,進行查看,如圖
SHOW VARIABLES LIKE 'validate_password%';
這個就是密碼策略!!!
關於 mysql 密碼策略相關參數;
1)、validate_password_length 固定密碼的總長度;
2)、validate_password_dictionary_file 指定密碼驗證的文件路徑;
3)、validate_password_mixed_case_count 整個密碼中至少要包含大/小寫字母的總個數;
4)、validate_password_number_count 整個密碼中至少要包含阿拉伯數字的個數;
5)、validate_password_policy 指定密碼的強度驗證等級,默認為 MEDIUM;
關於 validate_password_policy 的取值:
0/LOW:只驗證長度;
1/MEDIUM:驗證長度、數字、大小寫、特殊字符;
2/STRONG:驗證長度、數字、大小寫、特殊字符、字典文件;
6)、validate_password_special_char_count 整個密碼中至少要包含特殊字符的個數;
2、設置密碼的驗證強度等級(就是因為這個問題)
只要修改密碼強度等級就可以,就可以解決密碼策略問題,原因是自己的密碼“1234567”太簡單了!!!所以改LOW點!!!
執行語句:
set global validate_password.policy=LOW; set global validate_password.policy=0;(我用的這條)
set global validate_password_policy=LOW; ==》文章里說用這個,但是我的密碼策略那個字段名稱是validate_password.policy,所以大家注意一下。
修改完強度等級之后,再執行:
#修改密碼長度(可有可無,隨意) set global validate_password.length = 6; #刷新 FLUSH PRIVILEGES; #更改密碼成功!!! ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678'; #刷新 FLUSH PRIVILEGES; #退出 exit; #再重新用新密碼登錄 mysql -u root -p password:輸入新密碼
大功告成!!!
具體修改其他內容可以參考解決問題的文章!!!!
==============================================
擴展其他,更新查看user表信息:
update user set authentication_string='' where user='root';
select user,host,authentication_string from user;