MySQL 是廣泛使用的關聯式資料庫管理系統,但在 Linux 系統下,使用者有時會遇到無法連線或存取 MySQL 的問題。錯誤訊息常出現 ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector -- APPARENT DEADLOCK!!! 等死結偵測資訊。經排查,多數情況是由於 MySQL 權限設定不當導致。本文提供完整的解決流程。

應用程式無法連線 MySQL,日誌顯示執行緒死結(Deadlock)警告,Managed Threads 與 Active Threads 數量一致,顯示連線池耗盡。
經確認,問題在於 MySQL 使用者權限不足,導致應用程式無法建立有效連線,進而觸發連線池耗盡與死結偵測。
mysql -uroot -proot mydbName-u 指定使用者,-p 指定密碼,mydbName 為目標資料庫名稱。grant all privileges on *.* to 'wangs'@'%' identified by '123456';*.* 表示所有資料庫所有資料表,% 代表允許所有 IP 遠端連線,若需限制 IP 可改為具體 IP。單引號不可省略。flush privileges;exit;/etc/init.d/mysql restartgrant all privileges on *.* to 'wangs'@'%' identified by '123456';:建立使用者 wangs,密碼 123456,擁有所有資料庫的所有權限,允許來自任意 IP 的連線。flush privileges;:將權限變更立即載入記憶體,無需重啟服務即可生效(但建議仍重啟服務確保穩定)。注意:上述步驟缺一不可,請依序執行。若生產環境請謹慎設定權限範圍,避免過度開放造成安全風險。
以上即為 Linux 系統下無法存取 MySQL 的典型解決方案。遇到類似問題時,請先確認錯誤日誌,再針對權限或連線池設定進行調整。