【筆記】MySQL 4.1.7 and PHP 4.3.x 搭配注意事項

系統環境:

  • MySQL 4.1.7 (官方正式推薦版本,支援 UTF-8 編碼)
  • PHP 4.3.9
  • phpMyAdmin 2.6.0-pl3

問題:

  • 當使用 phpmyadmin 2.6.0-p13 欲登入 MySQL 4.1.7 時,會出現如下錯誤訊息:
    #1251 – Client does not support authentication protocol requested by server; consider upgrading MySQL client

原因:

  • 因為 MySQL 4.1 以上版本為了提高安全性,使用了新的密碼驗證機制。如此,MySQL 的 Client Library 需要 4.0 版本以上。但目前在 Client 端所使用的 PHP 版本若為 5.0 以下(如 4.3.9),其內建的 MySQL Library 大都為 3.23,並不支援新版的密碼驗證機制。

解決方案(以下擇其一):

  • 將 PHP 升級為 5.0版以上(但許多應用伺服器,包括諸多 Blog 平台,尚未支援 PHP5)
  • 切換 PHP 4.3.9的 MySQL extension 為 MySqlLi (但是,在 Windows 的平台如何切換?我不知道…)
  • 在 MySQL console 下,更新密碼形式改為 OLD_PASSWORD() (設回原來舊版的密碼驗證機制)。
    mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
          -> WHERE Host = 'some_host' AND User = 'some_user';
    mysql> FLUSH PRIVILEGES;
    

參考文件:MySQL Manual | A.2.3 Client does not support authentication protocol

文章導覽

   

共有 2 則迴響

  1. 說到mysql
    當初mysql (4.0 以上) 的 jdbc driver
    若要使用UTF-8
    其connection string需要加上參數(property)
    useUnicode=true 以及characterEncoding=utf-8

    例如:
    jdbc:mysql://localhost/DB-TEST?useUnicode=true&characterEncoding=utf-8

    還有小弟在linux使用apache 2.0.48 + php 4.3.10 + mysql 4.1.7
    都工作的很好
    只是除了mysql之外,全都是手動compile,且設定都不曾透過phpmyadmin , 這樣才能掌握mysql與php

    至於在linux如何簡易安裝mysql
    1. download mysql 之後請解開mysql
    2. 進入該目錄( ex: cd mysql-standard-4.1.7-pc-linux-i686)
    3. 執行configure
    ex:
    ./configure
    4..更改目錄名字成 mysql 然後移成 /usr/local/mysql
    5. 新增user: mysql
    6: chown -R mysql /usr/local/mysql
    7: 將 /usr/local/mysql/support-files/mysql.server 複製到
    /etc/rc.d/init.d/mysql
    8. 將 /usr/local/mysql/support-files/my-small.cnf 複製且改名 /etc/my.cnf
    9: chmod +x /etc/rc.d/init.d/mysql
    10. /etc/rc.d/init.d/mysql start 就ok了
    11. /usr/local/mysql/data 下面會有一個檔案是紀錄 log, 有bug可以查看

    ps . 安裝完畢成功之後,請研究/etc/rc.d/init.d/mysql 的內容,將會有更深的體
    驗,以後不管敵人怎麼變都可以應付自如

發佈回覆給「Kenming Wang」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *