データベース
【MariaDBエラー備忘録】mysqldump: Couldn’t execute ‘show events’: Cannot proceed because system tables used by Event Scheduler were found damaged at server start (1577)
「PostgreSQL」によるテーブルのコピー(複写)SQL
「PostgreSQL」のプロシージャでtrueとfalseを文字列に置き換えるif文
MySQL:InnoDBの破損リカバリを強制実行!
redmineにログイン出来ない ・・・ MySQLのエラー
「Seasar」でDBに追加されたテーブルを操作する書き方メモ
「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)
よってパスワードを新形式へアップデートする事で解決できる!
※DB変更後は、必ずMySQLのサービスを再起動!
-
SET PASSWORD FOR '対象のユーザー名'@'対象のホスト名' = PASSWORD('対象となるユーザのパスワード');
※上記SQLでOKだが直接updateしても変更できる、というか上の方がスマートだと知らなかった^^
-
UPDATE
-
`mysql`.`user`
-
SET
-
`Password` = PASSWORD ('対象となるユーザのパスワード')
-
WHERE
-
`user`.`Host` = '対象のホスト名' --(ユーザー名がユニークの場合は必要なし)
-
AND `user`.`User` = '対象のユーザー名'
-
;
「mysqlnd」を使ったPHPによるMySQL接続方法
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。