天塌下來有武大郎頂着,不用擔心。Mysql數據庫沒有密碼也可以登錄,登上去重設個新密碼就可以了。
首先,關閉Mysql服務:
service mysqld stop
接着修改配置文件( my.cnf ):mysqld 下增加一行 skip-grant-tables
補充:# 號表示注釋
重啟Mysql服務,不用密碼也可登錄了:
service mysqld start
免密登錄:
mysql -u root
選中系統庫( 為了訪問mysql.user用戶表,不要隨便選別庫 ):
use mysql;
說明:8.0版本不允許在跳過策略 skip-grant-tables 時修改密碼。
先清除root用戶密碼,刪除my.conf添加的 skip-grant-tables 后,通過空密碼正常訪問數據庫后,就可以修改密碼了。
補充:5.7/5.5 版本在此時就可以直接改一個新密碼了。
清除 root 用戶的密碼 :
update user set authentication_string = '' where user = 'root';
並退出:
quit;
接着把 my.cnf 添加的 skip-grant-table 刪掉,並重啟 mysql 服務。
現在我們已經可以正常登錄數據庫了:
mysql -u root -p
enter password 處(輸密碼的地方)敲擊回車即可登錄。
查看密碼策略:
SHOW VARIABLES LIKE 'validate_password%';
補充:修改密碼策略(不建議使用簡單密碼):
只校驗長度:set global validate_password_policy=LOW;
密碼長度6位:set global validate_password_length=6;
最后根據策略修改密碼:
ALTER USER 'root'@'%' IDENTIFIED BY '123456' ;
可能出現的報錯: host ( 主機名) 錯誤
解決:select user,host from user; 根據結果修改:‘root’@'localhost' ---> 'root'@'%' 即可
補充:'%',表示可以遠程登錄,並且是除服務器外的其他任何終端,%表示任意IP都可登錄。
'localhost',表示可以本地登錄,即可以在服務器上登陸,localhost則只允許本地登錄。