close
 
為了建立開發測試環境,在Windows環境下讓多個Mysql版本同時運行。
目前已安裝之 mysql 版本為 3.23.49,這個部分不再作更動,並且加裝 mysql 4.1.22 及 mysql 5.0.45 共三個版本同時在同一部機器上運行。
(以下原本是要安裝 mysql 5.1.22,但是後來發現缺少 mysqld-nt.exe,因此先改改裝 mysql 5.0.45 。)
 
一、下載 mysql 4.1 及 mysql 5.0
下載Windows 免安裝的 zip package 壓縮包,mysql-4.1.22 及 mysql-5.0.45 。
因為是要另外安裝 Mysql 4 與Mysql 5 共存並行,所以這裡不使用有Setup.exe 的安裝檔而是使用壓縮包,再自行部署。 
二、壓縮包解壓縮到  C:\mysql4 與  C:\mysql5
原本已經安裝的 mysql 3.23.49 位置在 C:\mysql,此處不再變動。
為了容易辨識,把 mysql-4.1.22 壓縮包解壓縮到 C:\mysql4 ;把 mysql-5.0.45 壓縮包解壓縮到 C:\mysql5 。  
三、建立 mysql 組態設定檔 my.ini
要讓 多個版本的 mysql server 並行於同一部機器上有一個問題,就是 mysql 組態設定檔 my.ini 衝突的問題。
一般在Windows上安裝mysql,都是把 my.ini 檔複製到系統目錄下%SYSTEMROOT%(一般為 C:\WINNT 或 C:\WINDOWS),但是各個版本的 mysql server 的 my.ini 設定值並不完全相同,所以,必須分開放在不同的目錄位置。
事實上, my.ini 除了放在系統目錄下以外,也可以放在 mtsql 安裝的目錄下,只是在執行 mysql install 時需要另外指定位置,這個部分後續再提。
所以,這裡 mysql-4.1.22 的 my.ini 放在 C:\mysql4 ;把 mysql-5.0.45 的 my.ini 放在 C:\mysql5 。
 
◎ 以下動作 mysql-4.1.22 及 mysql-5.0.45 都一樣
在  C:\mysql4 與  C:\mysql5 目錄下找到 my-medium.ini ,在原位置複製一份並更名為 my.ini。
(這裡有 my-small.ini、my-medium.ini 、my-large.ini 、my-huge.ini、my-innodb-heavy-4G.ini 五個檔案,內容的設定項目都大同小異,主要差別是針對主機配置記憶體的大小。因為我們只是要建立開發測試環境,所以選擇 my-medium.ini 即可,配置記憶體是 32M - 64M。)
四、編輯 mysql-4.1.22 的 my.ini
在 C:\mysql4 用記事本開啟 my.ini 並且修改/增加以下設定項目:
[client]
port  = 3306
-- 修改為 ---
port  = 33064
(mysql 預設的 port 號是 3306 ,已經給原來已安裝之 mysql 3.23.49 使用了,所以這裡改成 33064。要改哪一個 port 可以任選(0 ~ 65535),只要不跟其他服務衝突就好。) 
-- 增加 --
default-character-set = utf8
 
 [mysqld]
port  = 3306
-- 修改為 ---
port  = 33064
-- 增加 --
basedir = C:/mysql4
datadir = C:/mysql4/data
default-character-set = utf8
default-collation = utf8_general_ci
(basedir 是 mysql 程式安裝的位置;datadir 式資料庫檔案存放的位置;default-character-set 是預設編碼;default-collation 是預設字元集。)
 
-- 增加 --
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
五、編輯 mysql-5.0.45  的 my.ini
在 C:\mysql5  用記事本開啟 my.ini 並且修改/增加以下設定項目:
[client]
port  = 3306
-- 修改為 ---
port  = 33065
(mysql 預設的 port 號是 3306 ,已經給原來已安裝之 mysql 3.23.49 使用了,所以這裡改成 33065。要改哪一個 port 可以任選(0 ~ 65535),只要不跟其他服務衝突就好。)
-- 增加 --
default-character-set = utf8
 
 [mysqld]
port  = 3306
-- 修改為 ---
port  = 33065
-- 增加 --
basedir = C:/mysql5
datadir = C:/mysql5/data
default-character-set = utf8
default-collation = utf8_general_ci
(basedir 是 mysql 程式安裝的位置;datadir 式資料庫檔案存放的位置;default-character-set 是預設編碼;default-collation 是預設字元集。)
 
-- 增加 --
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
六、 移除Windows環境變數 C:\mysql\bin
‧原來已安裝之 mysql 3.23.49 若有設定Windows環境變數 C:\mysql\bin 必須把他移除掉,否則在執行 mysql 其他版本安裝時,會優先執行到 mysql 3.23.49 的指令而造成安裝失敗。
‧控制台 → 系統 → 【進階】頁籤 → 【環境變數】按鈕 → 下方【系統變數】→找到變數名稱 path→ 編輯→移除 C:\mysql\bin;  → 按【確定】
 
七、安'裝 mysql-4.1.22 及 mysql-5.0.45 
因為我們把 mysql4 與 mysql5 的 my.ini 放至於該各自安裝的目錄下 C:\mysql4 與  C:\mysql5,所以在安裝時必須加上  --defaults-file 指令,用意是強制指定 my.ini 的位置(否則就需要把 my.ini 放到 C:\Windows 底下,這樣就無法實現多版本並行)。
另外,原來已安裝之 mysql 3.23.49 已使用了 MySql 這個服務名稱了,所以,這裡分別把 mysql4 與 mysql5 的服務名稱命名為 MySql4 與 MySql5 以作為區別。
 
◎有二種方式可以下達安裝或移除 mysql 服務的指令,一是直接在DOS 命令列執行指令;二是把指令建立成命令檔(*.cmd)然後再雙擊執行命令檔。
 
** DOS 命令列執行指令 ****** 
‧安'裝 mysql-4.1.22
    C:\mysql4\bin>mysqld-nt --install MySql4 --defaults-file=C:\mysql4\my.ini 
‧安'裝 mysql-5.0.45 
    C:\mysql5\bin>mysqld-nt --install MySql5 --defaults-file=C:\mysql5\my.ini 
‧移除安'裝 mysql-4.1.22
    C:\mysql4\bin>mysqld-nt --remove MySql4 
‧安'裝 mysql-5.0.45 
    C:\mysql5\bin>mysqld-nt --remove MySql5
 
** 建立成命令檔(*.cmd) ****** 
‧C:\mysql4 下新增文字檔,加入內容文字如下,命名為  install.cmd。
    C:\mysql4\bin\mysqld-nt --install MySql4 --defaults-file=C:\mysql4\my.ini 
‧C:\mysql5 下新增文字檔,加入內容文字如下,命名為  install.cmd。
    C:\mysql5\bin\mysqld-nt --install MySql5 --defaults-file=C:\mysql5\my.ini 
‧C:\mysql4 下新增文字檔,加入內容文字如下,命名為  uninstall.cmd。
    C:\mysql4\bin\mysqld-nt --remove MySql4 
‧C:\mysql5 下新增文字檔,加入內容文字如下,命名為  uninstall.cmd。
    C:\mysql5\bin\mysqld-nt --remove MySql5
 六、在 DOS 命令列測試
‧啟動服務
C:\>NET START MySql4 
C:\>NET START MySql5 
七、PHP 連線字串
 $link mysql_connect("localhost:33064""mysql_user""mysql_password")
         or die(
"Could not connect: " mysql_error());
 
 $link mysql_connect("localhost:33065""mysql_user""mysql_password")
         or die(
"Could not connect: " mysql_error());
◎ 後記
安裝完成後發現一個問題,使用PHP語法連結 mysql 4.1 資料庫時,可能會產生 "Client does not support authentication protocol requested by server" 的錯誤訊息,解決方法參考下一篇【轉載:新版Mysql密碼算法不同導致「Client does not support authentication protocol requested by server」錯誤】。
 
另外,使用 DOS 命令列登入mysql4管理介面,結果會變成登入到 mysql  3.23.49 版本的管理介面,mysql5 並不會有此情況,原因待查。

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 yoonow 的頭像
    yoonow

    右腦 想去環遊世界

    yoonow 發表在 痞客邦 留言(0) 人氣()