Mysql (針對Mysql5.7版本,其他版本可能略有不同) 錯誤:1045 解決方法: 以管理員身份運行cmd(win8系統:win+x 鍵 ,再按 A鍵 ),進入Mysql安裝目錄下的bin目錄下(如下圖所示,根據自己的情況修改目錄)@:下麵還要再打開cmd視窗,為方便區別,此視窗記為‘’ c ...
Mysql
(針對Mysql5.7版本,其他版本可能略有不同)
錯誤:1045
解決方法:
-
-
運行
net stop mysql
,停止Mysql服務 -
運行
mysqld -nt --skip-grant-tables
,使得在登錄時可以跳過登錄密碼以上三步正常運行後該cmd視窗應該處於靜止不動,游標閃爍的狀態
-
打開另一個管理員的cmd視窗
-
運行
mysql -uroot -p
回車,出現Enter password:
直接回車,成功進入了mysql -
可以運行以下命令來修改密碼:
-
use mysql
使用mysql資料庫 -
update user set authentication_string=password('mysqladmin') where user='root';
更新root
的密碼為mysqladmin
,顯示Query OK
則修改成功。
解釋:更新 user表 使 authenticatio_string(密碼)欄位 = mysqladmin(password('') 是以密碼保護的形式存儲,在資料庫看不見密碼原文) 修改的是,user(欄位)=root(值)的哪一行。 - 以上兩步就可以修改密碼成功。若你的mysql不是用authentication_string欄位來存儲密碼。可以用以下方法來找到存儲密碼的欄位。
show tables;
查看當前資料庫下的所有表-
desc user
查看user表的結構,在這一步你可以查看user表的欄位,密碼欄位就在這裡,不是mysql5.7版本的可以在“desc user”的結果下,自己判斷哪個是密碼欄位 -
select host,user,authentication_string from user;
查看三列關於user表的信息,若你的密碼欄位不是authentication_string,可自行替換成你表中的密碼欄位名。 -
update user set authentication_string='mysqladmin' where user='root';
不推薦,這種方式就是將密碼明文不經過加密直接顯示在資料庫中。
-
經過以上6步後,已經成功的修改了資料庫登錄密碼。接下來是再次嘗試登錄。
-
關閉‘’cmd-A‘’視窗 (輸入了skip-grant-tables的cmd)
-
關閉任務管理器中的進程
mysql.exe
(任務管理器->詳細信息->進程->找到mysql.exe(大約占150M記憶體)->關閉)
-
在‘’cmd-B‘’視窗中輸入
net start mysql
-
輸入
mysql -uroot -p
,敲入新的用戶名、密碼 即可登錄成功
若還是不能登錄,或出現錯誤1130
。則是許可權問題 (或 host問題),以下為許可權為題的解決方法:
錯誤:1130
解決方法:
-
按以上方法跳過驗證進入資料庫
-
在
mysql>
中執行flush privileges
刷新許可權(不執行這步.會出現在skip-grant-tables
模式下不能授權的問題) -
執行
grant all privileges on *.* to root@'localhost' identified by "mysqladmin";
為root用戶授權 -
關閉
cmd
和mysql.exe
進程,啟動mysql服務net start mysql
,重新登錄mysql -uroot -p
即可成功
若還是不能解決,或有其他問題。可以評論留言,我會儘快回覆。