20110517

MySQL "關聯資料表的附加功能未能啟動" 正確解決方法

安裝完 MySQL ,登入後卻出現 "關聯資料表的附加功能未能啟動" (The additional features for working with linked tables have been deactivated.) 的警告時,正確解決方法。



網路上可以搜尋到很多關於 "關聯資料表的附加功能未能啟動" 的處理方式,但幾乎都是不正確、不完整,或者治標不治本的辦法,本篇會教大家如何正確處理這個常見的警告訊息。

首先,我們必須了解造成這個警告訊息出現的原因,可能是下面這些情況:

  • pmadb 設定不正確
  • controluser 或 controlpass 設定不正確


如果是因為pmadb 設定不正確...


STEP 1:檢查是否有 "phpmyadmin" 資料庫

登入 phpMyAdmin 管理介面之後,左方是否有 "phpmyadmin" 資料庫?
如果有,再檢查 "phpmyadmin" 資料庫中是否有以下共九個資料表,
  • pma_bookmark
  • pma_column_info
  • pma_designer_coords
  • pma_history
  • pma_pdf_pages
  • pma_relation
  • pma_table_coords
  • pma_table_info
  • pma_tracking
若沒有 "phpmyadmin" 資料庫 或缺少任一資料表(特別是 "pma_tracking" 資料表),就必須重新載入資料庫。


若需要重新載入資料庫,在 ../phpMyAdmin/scripts 資料夾內找到 create_tables.sql 這個檔案,從 phpMyAdmin 中載入這個檔案(即執行檔案中的所有 SQL)。


清除瀏覽器快取,並重新登入 phpMyAdmin ,檢查 "phpmyadmin" 資料庫和資料表是否已修正。這時候 "關聯資料表的附加功能未能啟動" 警告訊息可能已經消失了,但為了確實解決問題,必須繼續 STEP 2。

STEP 2:檢查 config.inc.php

在 phpMyAdmin 目錄下找到 config.inc.php 這個檔案,開啟之後找到下列這段程式碼,
/* Advanced phpMyAdmin features */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';

找到之後跟上列程式碼比對,若有缺少,複製缺少的項目並貼進 config.inc.php 中儲存。要特別注意

$cfg['Servers'][$i]['tracking'] = 'pma_tracking';

重新登入 phpMyAdmin 後,錯誤訊息已消失!


如果是因為controluser 或 controlpass 設定不正確...


STEP 1:檢查 config.inc.php

在 phpMyAdmin 目錄下找到 config.inc.php 這個檔案,開啟之後找到下列這段程式碼,這是用來處理所有資料庫關聯的功能(也就是 pmdb)。
/* User for advanced features */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';

找到之後跟上列程式碼比對,其中pma 和 pmapass 只是本篇說明用的帳號和密碼,可能與你的設定不同,若這兩行程式已存在,基本上代表安裝 MySQL 時已正確設定,可以跳過這個 STEP;但若缺少這兩行程式,或者密碼項目未設定(如 $cfg['Servers'][$i]['controlpass'] = '';)而想要設定,請繼續看下去。

如果沒有上面這兩行程式碼,請複製並貼進 config.inc.php 中儲存,而 pma 和 pmapass 只是本篇說明用的帳號和密碼,請取代成你自己所要使用的帳號密碼。


STEP 2:建立 controluser/controlpass 和設定權限

以 root 登入 phpMyAdmin,下 SQL 指令如下,
CREATE USER 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';
這兩行指令代表,建立一個 phpMyAdmin 的使用者帳戶 pma 密碼 pmapaa 從 'localhost' 登入,擁有 SELECT, INSERT, UPDATE, DELETE phphmyadmin 資料庫下所有資料表的權限。


其中 pma/pmapass 的設定必須和 STEP 1 中,config.inc.php 中的設定一致,若 webserver 的 host 和 MySQL server 位置不同的話也記得要更改。

重新登入 phpMyAdmin 後,錯誤訊息已消失!

沒有留言:

張貼留言