萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 系統無法連線 MySQL 資料庫的排查與解決方法

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

MySQL 連線錯誤示意圖

問題現象

應用程式無法連線 MySQL,日誌顯示執行緒死結(Deadlock)警告,Managed Threads 與 Active Threads 數量一致,顯示連線池耗盡。

根因分析

經確認,問題在於 MySQL 使用者權限不足,導致應用程式無法建立有效連線,進而觸發連線池耗盡與死結偵測。

解決步驟

  1. 以 root 身分登入 MySQL:
    mysql -uroot -proot mydbName
    說明:-u 指定使用者,-p 指定密碼,mydbName 為目標資料庫名稱。
  2. 授予遠端存取權限:
    grant all privileges on *.* to 'wangs'@'%' identified by '123456';
    說明:*.* 表示所有資料庫所有資料表,% 代表允許所有 IP 遠端連線,若需限制 IP 可改為具體 IP。單引號不可省略。
  3. 刷新權限使其立即生效:
    flush privileges;
  4. 退出 MySQL:
    exit;
  5. 重啟 MySQL 服務:
    /etc/init.d/mysql restart

指令詳解

  • grant all privileges on *.* to 'wangs'@'%' identified by '123456';:建立使用者 wangs,密碼 123456,擁有所有資料庫的所有權限,允許來自任意 IP 的連線。
  • flush privileges;:將權限變更立即載入記憶體,無需重啟服務即可生效(但建議仍重啟服務確保穩定)。

注意:上述步驟缺一不可,請依序執行。若生產環境請謹慎設定權限範圍,避免過度開放造成安全風險。

以上即為 Linux 系統下無法存取 MySQL 的典型解決方案。遇到類似問題時,請先確認錯誤日誌,再針對權限或連線池設定進行調整。

copyright © 萬盛學電腦網 all rights reserved