「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. ;

タイトルとURLをコピーしました