今天在使用mysql時(shí),遇到了一個(gè)問題:無法修改密碼。
一開始我以為是自己忘記了密碼,于是嘗試了重置密碼的方法:
# 使用root登錄mysql mysql -u root -p # 進(jìn)入mysql命令行后,執(zhí)行以下命令 use mysql; update user set password=password('新密碼') where user='root'; flush privileges; quit;
但是我發(fā)現(xiàn)無論如何都無法修改成功,提示如下:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
我百思不得其解,遂在網(wǎng)上搜索了一下,發(fā)現(xiàn)有可能是mysql數(shù)據(jù)被鎖,導(dǎo)致修改密碼失敗。
經(jīng)過分析,鎖可能來自于兩個(gè)方面:
- 當(dāng)前會話對同一行數(shù)據(jù)的操作導(dǎo)致鎖
- 其他會話對同一行數(shù)據(jù)的操作導(dǎo)致鎖
那么如何解決這個(gè)問題呢?
一般來說,可以執(zhí)行以下幾個(gè)步驟:
- 查看當(dāng)前有哪些進(jìn)程在使用mysql
show processlist;
select * from information_schema.innodb_locks;
kill 進(jìn)程ID;
經(jīng)過以上步驟,我成功地解決了mysql數(shù)據(jù)被鎖無法修改密碼的問題。當(dāng)然,具體情況因人而異,需要根據(jù)實(shí)際情況具體分析解決。