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:- 來源端與目的端的 MySQL 資料庫都是 UTF-8 設定
- 將資料庫透過 phpMyAdmin 匯入後連結網頁時只要是 中文字 部份就都變成問號???
- 但在 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)