2015年12月6日 星期日

phpMyAdmin「設定儲存空間,部份延伸功能將無法使用」

用傳統的方法安裝 phpMyAdmin,
直接解縮 phpMyAdmin,複製 config.sample.inc.php 為 config.inc.php,做一些基本設定後。
發現瀏覽時,在"首頁"或資料庫的"操作"頁面,出現「尚未設定 phpMyAdmin 設定儲存空間,部份延伸功能將無法使用」或「phpMyAdmin 設定儲存空間己停用」訊息。
本來這個訊息不去理會也不影響使用,
但如果是點"操作"頁面「phpMyAdmin 設定儲存空間己停用」訊息後面的"了解原因"連結後,
會出現"於目前資料庫建立 phpMyAdmin 設定儲存空間"連結,
點了之後,便會在目前的資料庫建立一堆"pma__"開頭的資料表。
之後刪除這些資料表,便會發現出現一些找不到這些資料表的錯誤,除非登出 phpMyAdmin 再重新登入才會正常,

解決方法:
  1. 若不想使用這個功能,可在 config.inc.php 加上以下設定,便不會在"操作"頁面出現可以建立這些資料表的功能。
    $cfg['ZeroConf'] = false;
    
  2. 或是建立一個專門放這些資料表的資料庫,開啟這個功能。
    匯入 phpMyAdmin/sql/create_tables.sql
    便會自動建立一個 phpmyadmin 資料庫,裡面有這些資料表,
    再來新增一個能夠存取此資料庫的帳號,假設帳號為 pma
    至於權限,可參考 phpMyAdmin/sql/create_tables.sql
    裡面有一段註解掉的SQL
    --
    -- Privileges
    --
    -- (activate this statement if necessary)
    -- GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO
    --    'pma'@localhost;
    
    可知這個帳號需要的權限為
    GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO 'pma'@localhost;
    
    帳號、權限設定好後,編輯 config.inc.php,拿掉以下這些行的註解,並填上前面設定的帳號、密碼即可。
    $cfg['Servers'][$i]['controluser'] = 'pma';
    $cfg['Servers'][$i]['controlpass'] = '密碼';
    
    /* Storage database and tables */
    $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]['table_uiprefs'] = 'pma__table_uiprefs';
    $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
    $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
    $cfg['Servers'][$i]['recent'] = 'pma__recent';
    $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
    $cfg['Servers'][$i]['users'] = 'pma__users';
    $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
    $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
    $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
    $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
    


參考:
https://phpmyadmin-english-united-kingdom.readthedocs.org/en/latest/config.html#cfg_ZeroConf
http://yuanfarn.blogspot.tw/2013/08/phpmyadmin.html
https://teddysun.com/268.html

4 則留言:

  1. 您好 請問 如果不小心刪除了原先設定的pma的帳號 該怎麼辦><

    回覆刪除
    回覆
    1. 再新增一個pma帳號,有phpmyadmin資料庫的這些權限:SELECT, INSERT, DELETE, UPDATE, ALTER

      刪除
  2. 請問這功能的用途?沒改用解法1 false有什麼差別? 因為另外開一個pma帳號是否增加風險?

    回覆刪除
    回覆
    1. 1.可使用 phpMyAdmin 的附加功能:Bookmarks, comments, SQL-history, tracking mechanism, PDF-generation, Transformations, Relations ...
      參考:https://docs.phpmyadmin.net/en/latest/setup.html

      2.風險視個人接受度而定。就如使用 phpMyAdmin 本身就可能是個風險,例如 phpMyAdmin 有bug,或安裝的人直接開放任何人都可以用root管理。當然,如果一切都如理想中所描述,也可以當做沒風險。

      刪除