MySQL修改root密碼的一些問題以及navicat連接1251錯誤

閒來無事,突然想學個MySQL,沒想到開頭就是這麼難,關於修改root密碼可謂是一波三折

而這之中曲折的罪魁禍首這是MySQL的版本問題,下面我就分爲兩部分來說說修改root密碼,以MySQL5.7.9爲界線,因爲mysql 5.7.9以後廢棄了password字段和password()函數;authentication_string:字段表示用戶密碼。

 mysql 5.7.9以下修改密碼很方便,基本就是三種方法

1、 用SET PASSWORD命令   

mysql> set password for 用戶名@localhost = password('新密碼');

2、用UPDATE直接編輯user表  

mysql> use mysql;  
mysql> update user set password=password('新密碼') where user='root' and host='localhost';  
mysql> flush privileges;

3、在知道原密碼的前提下用mysqladmin 

mysql> mysqladmin -u用戶名 -p舊密碼 password 新密碼

 

mysql 5.7.9以上的版本修改就要注意很多地方了

1、root用戶authentication_string字段下有內容,先將其設置爲空,沒有跳過

 

desc user;#查看是否爲空

 

use mysql; 
update user set authentication_string='' where user='root'

2、直接執行

ALTER user 'root'@'%' IDENTIFIED BY '新密碼'

 

關於密碼策略的修改問題以及數據庫工具連接問題(報錯1251)

首先我們要查看 mysql 初始的密碼策略,輸入show variables like 'validate_password%';

 設置密碼的驗證強度等級,設置 validate_password.policy 的全局參數爲 LOW 即可,

mysql>  set global validate_password.policy=LOW;

 

設置密碼的長度,設置validate_password.length的全局參數即可,

mysql> set global validate_password.length=6;

關於 mysql 密碼策略相關參數;

validate_password.length  固定密碼的總長度;
validate_password.dictionary_file 指定密碼驗證的文件路徑;
validate_password.mixed_case_count  整個密碼中至少要包含大/小寫字母的總個數;
validate_password.number_count  整個密碼中至少要包含阿拉伯數字的個數;
validate_password.policy 指定密碼的強度驗證等級,默認爲 MEDIUM;
validate_password.special_char_count 整個密碼中至少要包含特殊字符的個數;

關於 validate_password.policy 的取值:

0/LOW:只驗證長度;
1/MEDIUM:驗證長度、數字、大小寫、特殊字符;
2/STRONG:驗證長度、數字、大小寫、特殊字符、字典文件;

 

然後還有一點很重要就是user表中的這個host字段,root用戶的host在不同版本的取值也不一樣,這對後面修改密碼和加密規則都有影響,

mysql> use mysql;
mysql> select user,host from user;

1、完全忘記密碼

mysql> use mysql;

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
mysql> FLUSH PRIVILEGES;

2、記得原密碼,輸入命令行最後輸入老密碼確定

mysql> mysqladmin -u root -p password 新密碼

 

'localhost' 指的是用戶開放的IP,可以是'localhost'(僅本機訪問,相當於127.0.0.1),可以是具體的'*.*.*.*'(具體某一IP),也可以是 '%' (所有IP均可訪問)

例如修改加密規則的兩種不同方式,解決1251錯誤

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼'

  FLUSH PRIVILEGES; #刷新權限 

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密碼';

  FLUSH PRIVILEGES; #刷新權限 

注:mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之後,加密規則是caching_sha2_password,連接sqlyog時出現加密規則錯誤1521 ,解決問題方法有兩種,一種是升級navicat驅動,一種是把mysql用戶登錄密碼加密規則還原成mysql_native_password.

遠程連接修改,其中“%”表示允許所有機器能訪問root用戶

update user set host='%' where user='root';
flush privileges;

原文出處:https://www.cnblogs.com/Mattmao/p/11550991.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章