MySQL 8.0.16 Community Server 密碼錯誤重置處理

mysql版本:Server version: 8.0.16 MySQL Community Servermysql

錯誤提示:linux

# 登陸mysql,輸入密碼後sql

mysql -u root -p

mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

提示須要密碼驗證,訪問拒絕,密碼錯誤,正確密碼未知,需重置密碼。數據庫

解決辦法:函數

# 默認狀況下,mysql安裝後,若是密碼爲空,會自動建立隨機密碼spa

# 若是密碼錯誤,沒法登陸,打開my.ini的將skip-grant-tables放開,linux環境下是/etc/my.cnf,表示無認證登陸插件

mysql -u root -p

# 查看mysql日誌文件所在文件置,在error log中,有爲root用戶隨機生成了一個密碼日誌

select @@log_error;

# 經過grep命令找到隨機密碼code

grep "password" /var/log/mysqld.log

2019-06-29T14:00:02.600036Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Se4%Fa3r5_rP

# 登陸,用該密碼登陸到服務端後,必須立刻修改密碼ip

mysql -u root -pSe4%Fa3r5_rP

#(或者,直接跳過上述方式,直接修改密碼)

# 進入mysql

use mysql;

# 查看user信息

select host,user,authentication_string from user;

# 若是當前root用戶authentication_string字段下有內容,先將其設置爲空

update user set authentication_string='' where user='root'

# 密碼要包含大寫字母,小寫字母,數字,特殊符號

ALTER user 'root'@'localhost' IDENTIFIED BY 'Db_user_2019#'

#改完後退出,再登陸便可

mysql -u root -pDb_user_2019#

注意:在mysql 5.7.9之後廢棄了password字段和password()函數;authentication_string:字段表示用戶密碼。

修改爲功後,再次到my.ini文件中的將skip-grant-tables註釋,開啓認證登陸,重啓mysql服務;

 

navicat沒法鏈接到mysql

修改密碼後,navicat沒法鏈接到mysql,帳號密碼都正確,鏈接報錯1251,就連項目程序中也沒法鏈接到mysql數據庫。

在MySQL 8.04前,執行:SET PASSWORD=PASSWORD('[新密碼]');可是MySQL8.0.4開始,這樣默認是不行的。由於以前,MySQL的密碼認證插件是「mysql_native_password」,而如今使用的是「caching_sha2_password」。

須要再次修改一次root密碼。

解決辦法:

# 登陸進入mysql環境

mysql -u root -pDb_user_2019#

# 定位到mysql數據庫

use mysql;

# 從新修改密碼

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Db_user_2019#';

# 刷新權限

FLUSH PRIVILEGES;
相關文章
相關標籤/搜索