站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

PhpMyAdmin-Web 介面控制 MySQL

前言

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

[phpMyAdmin] 特色如下:

實作環境

安裝及設定

步驟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 認證方式

參考

[phpMyAdmin - Documentation]

[ OHaHa's 學習心得- phpMyAdmin]

[ 網站建置百寶箱]

[ FreeBSD的安裝及各種網站的架設]

Me FAQ

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

Error Meaage:

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

不能載入 MySQL 模組請檢查 PHP 的組態設定

 [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 的模組後即可順利登入。

PHP 支援 MySQL 的模組

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

Error Meaage:

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

cookie 認證無法登入

Ans:

當設定認證方式 (auth_type) 為 cookie 時,需要設定 Blowfish Algorithm to Encrypt the Password 也就是利用您填入的字串來進行加密後才傳送密碼,而填入字串長度最多可以支援到 46 個字元。

 修改 config.inc.php
 $cfg['blowfish_secret'] = ' '                    //預設值
 $cfg['blowfish_secret'] = '1234'                 //隨便填入要進行加密的字串

Q.inclusion (include_path

'.:') in Unknown on line 0? ===

Error Meaage:

連結至 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

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

Error Meaage:

連結至 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

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

Error Meaage:

連結至 PhpMyADmin 登入頁面時顯示如下錯誤訊息

 phpMyAdmin - 錯誤
 Fatal error: Call to undefined function preg_match_all() in /home/web/phpadmin/libraries/sanitizing.lib.php on line 48

Ans:

參考這篇討論 [php @ FreeNode IRC archive (2007-05-11 00:00) Page 3 of 7] 後可知,此錯誤訊息是因為您的 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

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

Error Meaage:

將資料庫透過 phpMyAdmin 匯入後連結網頁時只出現如下錯誤訊息

 Error establishing a database connection

Ans:

請檢查 wp-config.php 裡面的使用者帳號密碼設定跟 MySQL 資料庫內建立的使用者帳號比對是否一樣,本次問題為使用者密碼不同造成無法 Query DB,將使用者密碼設定與 wp-config.php 一致後網頁便正確顯示。

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

Error Meaage:

  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

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

Error Meaage:

執行 .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"

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

Error Meaage:

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

 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)
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com