Blog Archives

  • 「mysqlnd」を使ったPHPによるMySQL接続方法 はコメントを受け付けていません。
    thumbnail

    「mysqlnd」を使ったPHPによるMySQL接続方法

    前回の記事にも書いたが、PHPを5.5にアップデートすると、
    「php-mysql」が「php-mysqlnd」に置き換わるため、
    以前のMySQLで作られていたユーザーのパスワードが古い形式のままの場合、
    DBへ接続できない現象
    が発生する。

    ※yumによるアップデート

    php-mysqlnd  i686  5.5.0-0.28.beta4.el6.remi  remi-test  248 k
      replacing  php-mysql.i686 5.4.14-1.el6.remi
    

    DB(mysql-userテーブル)を見てみると、
    rootのパスワードは新形式の長いタイプのパスワードだが、
    その他は短い古い形式のパスワードだった。

    ★ユーザーパスワードの確認 (DB:mysql / table:user)
    image

    ★旧形式と新形式のパスワードの違い
    image image

    よってパスワードを新形式へアップデートする事で解決できる!
     ※DB変更後は、必ずMySQLのサービスを再起動!

    SQL:

    1. SET PASSWORD FOR ‘対象のユーザー名’@‘対象のホスト名’ = PASSWORD(‘対象となるユーザのパスワード’);

    ※上記SQLでOKだが直接updateしても変更できる、というか上の方がスマートだと知らなかった^^

    SQL:

    1. UPDATE
    2.     `mysql`.`user`
    3. SET
    4.     `Password` = PASSWORD (‘対象となるユーザのパスワード’)
    5.     WHERE
    6.         `user`.`Host` = ‘対象のホスト名’ –(ユーザー名がユニークの場合は必要なし)
    7.     AND `user`.`User` = ‘対象のユーザー名’
    8. ;

    ★この続きを読みたい >>

  • PHPからMySQLに接続できない:mysqlnd はコメントを受け付けていません。
    thumbnail

    PHPからMySQLに接続できない:mysqlnd

    remi-testからPHP5.5にアップデートすると、PHPからMySQLのデータベースに接続できない事態が発生した。

    理由は以下の通り。

     ・「php-mysql」が廃止されて、「php-mysqlnd」に置き換わった
     ・「php-mysqlnd」でmysql_connect()系関数を使用した際、MySQLの古いパスワードフォーマット(16バイト)を使うとDBに接続できない

    ソース:PHP:下位互換性のない変更点

    よって対処方法としては、

     1.「php-mysqlnd」を使わないで「php-mysql」を使う
      ※今後の事を考えれば「php-mysqlnd」を使ったほうがいいかもしれない・・・

     2.MySQLのパスワードを設定し直す

    SET PASSWORD FOR 'username'@'hostname' = PASSWORD('パスワード');
    

     ※ただし、「my.cnf」に

    old_passwords=1
    

      とある場合は旧パスワードが有効になっているので、

    old_passwords=0
    

      と無効にする必要あり。設定が有効の場合に旧パスワードで設定するには

    SET PASSWORD FOR 'username'@'hostname' = OLD_PASSWORD('パスワード');
    

      で設定すればOK。

    ★この続きを読みたい >>