本文轉載自:https://blog.csdn.net/hua1011161696/article/details/80666025
解決方案:
步驟一:關閉數據庫服務端mysqld程序
兩種方式:
①快捷鍵 windows + R ;輸入 services.msc ; 找到MySQL 停止其服務(前提是你之前已經把MySQL加入了系統服務中)
②在命令行程序中;注意需要以管理員權限運行cmd程序,不然無法關閉mysqld進程
>>tasklist |findstr mysqld 這行命令可以用來查看mysqld是否在運行,在運行中則可以查到它的PID
>>taskkill /F /PID xxxx xxxx是從前面一條命令得到的PID值
步驟二:跳過權限登錄MySQL 服務器端
在cmd中執行 mysqld --skip-grant-tables
>>mysqld --skip-grant-tables
此時cmd程序會阻塞,關閉cmd程序 然后重新以管理員權限運行cmd
然后在cmd命令行中輸入 mysql 就能連接上MySQL 服務器端了
>>mysql
然后可以通過sql語句 :SELECT * from mysql.user\G; 來查看服務器端所有的用戶信息,重點查看User、Password、authentication_string這三項。這條語句非常關鍵。
步驟三:修改密碼
依次執行如下sql語句:
update mysql.user set authentication_string=password('321') where user = 'root';
flush privileges;
上面第一條sql語句中 password('密碼') 函數中寫你想要改成的密碼,我這用的是密碼321
接着執行:
SELECT * from mysql.user\G;
去找到root用戶的authentication_string這項,並把它的值記下來。
MySQL會給密碼進行加密,你想要設置的密碼進行加密后的值就等於此時authentication_string這項的值
所以接下來把Password這項的值也設置成此時authentication_string項的值就ok了;我設置的密碼是321 ,其對應的密文是 *7297C3E22DEB91303FC493303A8158AD4231F486
執行下面兩條sql語句:
update mysql.user set password = '*7297C3E22DEB91303FC493303A8158AD4231F486' where user = 'root';
flush privileges;
步驟四:
輸入 quit 退出 mysql ;然后就可以直接登錄了
>>mysql -u root -p
--------------------------------------------------------------------------------
當然也可以重啟下mysqld再登錄
再次提醒:需要以管理員權限運行cmd
>>tasklist |findstr mysqld
>>taskkill /F /PID xxxx
然后就是啟動mysqld程序
(不知怎么把mysqld加入系統服務中去可看點擊打開鏈接)
>>mysqld
若已經把mysqld程序加入了系統服務中,則需要在系統服務中啟動MySQL服務端
快捷鍵 windows + R ;輸入 services.msc ;
最后就是重新登錄
>>mysql -u root -p
在Password:處填入你前面設置的密碼
補充:修改密碼時報語法錯誤解決方法
問題:
mysql> update mysql.user set authentication_string=password('321') where user = 'root';
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 '('321') where user = 'root'' at line 1
解決方法:
使用如下語句即可解決
alter user 'root'@'localhost' identified by '123';