︿
Top

1、前言

phpMyAdmin 為一使用 PHP 語言撰寫而成用來管理 MySQL 資料庫的自由軟體 (Free Software)。

phpMyAdmin 特色如下: 
  • 直覺的 Web 操作介面
  • 支援許多 MySQL 功能
  • 瀏覽 (Browse)、建立 (Create)、複製 (Copy)、更名 (Rename)、刪除 (Drop) Database
  • 檢視 (Views)及索引 (Index) Tables
  • 針對資料庫伺服器進行維護資料庫 (Database) 及表格 (Tables) 的功能
  • 執行 (Execute)、編輯 (Edit)、批次查詢 (Btach Query) 任何 SQL 語法敘述
  • 管理 MySQL 使用者權限 (Users Privileges)
  • 管理 MySQL 儲存 (Store) 及觸發器 (Trigger)
  • 匯入 CSV 檔案格式至 MySQL
  • 匯出 CSV, SQL, XML, PDF, ISO/IEC 26300, Word, Excel, Latex...檔案格式
  • 同時管理多台資料庫伺服器
  • 建立 PDF 格式資料庫輸出
  • 建立複雜的查詢 (QBE,Query-By-Example)
  • 還有更多的功能...



文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.安裝 phpmyadmin 套件
          步驟2.修改 phpMyAdmin 設定檔 (config.inc.php)
          步驟3.連接 phpmyadmin 登入頁面
4、參考
5、Me FAQ
          Q1.連結時出現 "不能載入 MySQL 模組請檢查 PHP 的組態設定" 錯誤訊息?
          Q2.設定為 cookie 認證方式卻無法輸入帳號、密碼?
          Q3.inclusion (include_path '.:') in Unknown on line 0?
          Q4.無法連結 phpMyAdmin 登入頁面 ./config.inc.php is not readable.?
          Q5.無法連結 phpMyAdmin 登入頁面 Fatal error: Call to undefined function preg_match_all()?
          Q6.連結網頁時出現 Error establishing a database connection?
          Q7.連結網頁中文部份都是問號?
          Q8.執行時出現 getdate()、mktime() 函數呼叫有問題?
          Q9.設定帳號權限時因為資料庫名稱有 - 而無法設定?



2、實作環境

  • FreeBSD 8.2-RELEASE
  • phpMyAdmin-3.3.9.2 



3、安裝及設定

步驟 1. 安裝 phpmyadmin 套件

切換至 Ports Tree 路徑安裝 phpmyadmin 套件
cd /usr/ports/database/phpmyadmin  //切換至安裝路徑
make install clean                   //安裝套件並清除暫存檔案

安裝後還貼心的告訴您可搭配修改 Apache 設定檔 (httpd.conf) 來加強 phpMyAdmin 目錄的安全性,訊息如下:

To make phpMyAdmin available through your web site, I suggest that you add something like the following to httpd.conf:
    Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"
    <Directory "/usr/local/www/phpMyAdmin/">
        Options none
        AllowOverride Limit
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1 .example.com
    </Directory>




步驟 2. 修改 phpMyAdmin 設定檔 (config.inc.php)

phpMyAdmin 預設安裝於 /usr/local/www/phpMyAdmin 資料夾,請複製該資料夾至您的網站根目錄或您方便設定的資料夾,此次實作的 phpMyAdmin-3.3.9.2 版本 config.inc.php 內容如下
<?php
 /* $FreeBSD: ports/databases/phpmyadmin/files/config.inc.php.sample,v 1.4 2010/03/08 23:24:47 miwi Exp $
  *
  * Skeleton configuration file -- this file is empty on a fresh
  * installaton of phpmyadmin.
  *
  * Copy any settings you want to override from
  * libraries/config.default.php or visit /phpmyadmin/setup/ to generate a
  * basic configuration file
  *
  */
?>


從上面的提示訊息來看我們可知道 config.defaults.php 新的存放位置在 libraries 資料夾下,請複製並更名為 config.inc.php 後再進行修改
cd /usr/local/www/data/phpMyAdmin                 //切換路徑
cp libraries/config.default.php ./config.inc.php  //複製範檔進行修改
vi config.inc.php              //修改 config.inc.php 內容如下
 $cfg'PmaAbsoluteUri' = ' ';    //預設值,設定連結 phpmyadmin 的 URL
 $cfg'PmaAbsoluteUri' = 'http://www.weithenn.org/phpMyAdmin/';   //修改後
 $cfg'blowfish_secret' = '7ygv$RFV8ikm#WSG';    //採用 Cookie 認證方式時加密字串
 $cfg'Servers'$i'auth_type' = 'cookie';         //採用 Cookie 認證方式




步驟 3. 連接 phpmyadmin 登入頁面

設定完成後您可透過如下網址來連結至 PhpMyAdmin 登入頁面
ex. http://www.weithenn.org/phpMyAdmin

設定為 http 認證方式


設定為 cookie 認證方式




4、參考




5、Me FAQ

Q1. 連結時出現 "不能載入 MySQL 模組請檢查 PHP 的組態設定" 錯誤訊息?

Error Message:
連結至 PhpMyADmin 登入頁面時出現如下圖示點了 說明文件 連結後出現 phpmyadmin 的 FAQ 內容如下


1.20 I receive the error "cannot load MySQL extension, please check PHP Configuration". To connect to a MySQL server, PHP needs a set of MySQL functions called "MySQL extension". This extension may be part of the PHP distribution (compiled-in), otherwise it needs to be loaded dynamically.Its name is probably mysql.so or php_mysql.dll. phpMyAdmin tried to load the extension but failed. Usually, the problem is solved by installing a software package called "PHP-MySQL" or something similar.
Ans:
由訊息可知目前系統的 PHP 沒有安裝到支援 MySQL 的模組 (或安裝錯誤) 導致無法載入 MySQL 模組,因此請再安裝 PHP 模組一次並選擇支援 MySQL 選項,此次實作安裝 PHP 支援 MySQL 的模組後即可順利登入。




Q2. 設定為 cookie 認證方式卻無法輸入帳號、密碼?

Error Message:
連結至 PhpMyADmin 登入頁面時出現下圖畫面沒有帳號及密碼輸入的欄位?


Ans:
當設定認證方式 (auth_type) 為 cookie 時,需要設定 Blowfish Algorithm to Encrypt the Password 也就是利用您填入的字串來進行加密後才傳送密碼,而填入字串長度最多可以支援到 46 個字元。修改 config.inc.php 設定檔的內容如下
 $cfg'blowfish_secret' = ' '        //預設值
 $cfg'blowfish_secret' = '1234'     //隨便填入要進行加密的字串




Q3. inclusion (include_path '.:') in Unknown on line 0?

Error Message:
連結至 PhpMyADmin 登入頁面時顯示如下二行錯誤訊息
Warning: Unknown(/home/web/SQLAdmin/config.inc.php): failed to open stream: Permission denied in Unknown on line 0
Warning: (null)(): Failed opening '/home/web/SQLAdmin/config.inc.php' for inclusion (include_path='.:') in Unknown on line 0

Ans:
修改設定檔 config.inc.php 的權限為 644 (或設定 Web Service 可讀取) 之後即可順利顯示登入頁面。
-rw-r-----  1 root  wheel   39694 11  2 11:21 config.inc.php  //預設權限 (640)
#chmod 644 config.inc.php      //修改後 (或設定 Web Service 可讀取)

或修改為 Web Service 可讀取也可 (此例為 www)
#chown root:www config.inc.php
 -rw-r-----  1 root  www  39232  4 12 14:55 config.inc.php




Q4. 無法連結 phpMyAdmin 登入頁面 ./config.inc.php is not readable.?

Error Message:
連結至 PhpMyADmin 登入頁面時顯示如下錯誤訊息
Existing configuration file (./config.inc.php) is not readable.
Ans:
修改設定檔 config.inc.php 的權限為 644 (或設定 Web Service 可讀取) 之後即可順利顯示登入頁面。
 -rw-r-----  1 root  wheel   39694 11  2 11:21 config.inc.php //預設權限 (640)
chmod 644 config.inc.php   //修改後 (或設定 Web Service 可讀取)

或修改為 Web Service 可讀取也可 (此例為 www)
chown root:www config.inc.php
 -rw-r-----  1 root  www  39232  4 12 14:55 config.inc.php




Q5. 無法連結 phpMyAdmin 登入頁面 Fatal error: Call to undefined function preg_match_all()?

Error Message:
連結至 PhpMyADmin 登入頁面時顯示如下錯誤訊息
phpMyAdmin - 錯誤
Fatal error: Call to undefined function preg_match_all() in /home/web/phpadmin/libraries/sanitizing.lib.php on line 48

Ans:
此錯誤訊息是因為您的 Web Service 找不到 PHP-PCRE 模組所導致的錯誤,所以請確認您的系統是否安裝了 PHP-PCRE 模組,然後確定正確載入了 extension.ini 之後重新啟動 Web Service 即可。

查看系統是否安裝了 PHP-PCRE 擴充模組
pkg_info |grep -i pcre
 php5-pcre-5.2.6     The pcre shared extension for php

查看 PHP-PCRE 是否載入 extension.ini 中
cat /usr/local/etc/php/extensions.ini   //查看 PHP 擴充模組檔案
 extension=ctype.so
 extension=mysql.so
 extension=pcre.so     //載入 PHP PCRE Extension
 extension=session.so
 extension=bz2.so
 extension=gd.so
 extension=openssl.so
 extension=pdf.so
 extension=zlib.so
 extension=mcrypt.so
 extension=mbstring.so
 extension=xml.so
 extension=simplexml.so

最後請重新啟動 Web Service (此例為 Lighttpd) 來載入 PHP PCRE Extension
/usr/local/etc/rc.d/lighttpd restart



Q6. 連結網頁時出現 Error establishing a database connection?

Error Message:
將資料庫透過 phpMyAdmin 匯入後連結網頁時只出現如下錯誤訊息
Error establishing a database connection
Ans:
請檢查 wp-config.php 裡面的使用者帳號密碼設定跟 MySQL 資料庫內建立的使用者帳號比對是否一樣,本次問題為使用者密碼不同造成無法 Query DB,將使用者密碼設定與 wp-config.php 一致後網頁便正確顯示。



Q7. 連結網頁中文部份都是問號?

Error Message:
  1. 來源端與目的端的 MySQL 資料庫都是 UTF-8 設定
  2. 將資料庫透過 phpMyAdmin 匯入後連結網頁時只要是 中文字 部份就都變成問號???
  3. 但在 phpMyAdmin 查看 DB 內 Table 內容時中文字又是正確顯示

Ans:
此次問題修改 my.cnf 加上預設使用 utf8 的參數後,網頁的中文字就可正常顯示了
cat /etc/my.cnf
  mysqld
  default-character-set=utf8
  default-collation=utf8_general_ci
  client
  default-character-set=utf8

請注意從 MySQL 5.5 版本以後此參數修改了,若在 MySQL 5.5 版本上使用上述參數將會造成 MySQL 服務啟動失敗在 MySQL Log 中會看到如下服務啟動錯誤的訊息
110706 17:58:51 ERROR /usr/local/libexec/mysqld: unknown variable 'default-character-set=utf8'
110706 17:58:51 ERROR Aborting
110706 17:58:51  InnoDB: Starting shutdown...
110706 17:58:52  InnoDB: Shutdown completed; log sequence number 1595675
110706 17:58:52 Note /usr/local/libexec/mysqld: Shutdown complete
110706 17:58:52 mysqld_safe mysqld from pid file /db/mysql/cacti.dongfong.com.tw.pid ended

MySQL 5.5 以後的版本只要加如下參數即可
cat /etc/my.cnf
  mysqld
  character_set_server=utf8




Q8. 執行時出現 getdate()、mktime() 函數呼叫有問題?

Error Message:
執行 .php 檔案時出現如下錯誤訊息表示主機的時區 (timezone) 有問題
Warning: getdate() function.getdate: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /home/web/include/fun.inc.php on line 542 Warning: mktime() function.mktime: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /home/web/include/fun.inc.php on line 543

Ans:
看您是要直接修改 php.ini 或者是在 php 資料夾下新增檔案指令時區即可。
cat /usr/local/etc/php/date_timezone.ini
 date.timezone = "Asia/Taipei"




Q9. 設定帳號權限時因為資料庫名稱有 - 而無法設定?

Error Message:
欲將一個帳號設定擁有該資料庫管理權限,但因資料庫名稱中有個 - 號 而無法設定進去:

  • 資料庫名稱: wei-test
  • 資料庫管理帳號: wei
  • 資料庫管理密碼: weithenn1234

 mysql> grant all privileges on wei-test.* to wei@localhost IDENTIFIED BY 'weithenn1234';
 ERROR 1046 (3D000): No database selected
 mysql> grant all privileges on 'wei-test'.* to wei@localhost IDENTIFIED BY 'weithenn1234';
 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'wei-test'.* to wei@localhost IDENTIFIED BY 'weithenn1234' at line 1

Ans:
感謝 Joseph 賜教,此時要使用 (`) 符號 將資料庫括住即可正確執行。
mysql> grant all privileges on `wei-test`.* to wei@localhost IDENTIFIED BY 'weithenn1234';
  Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES ;
  Query OK, 0 rows affected (0.00 sec)
文章標籤: