mysql

EZiC

過去の【備忘録】一覧

<JavaScript>について <jQuery>に関して <Ruby>について <Ruby on Rails>に関して <PHP>について <Laravel>に関して <MariaDB/MySQL>について <Dock […]
EZiC

マサの3つの『ツイッター録』<mysql・天文・ホテル>【8】

サーバ移転でハマったphpMyAdmin FULLTEXT indexes… 私の場合はmariaDBでしたが、リストアテストをしたら「FULLTEXT indexes」エラー発生。 「Yarpp」とは別のプラグインでし […]
EZiC

【備忘録】M1マックでDockerを使ったRails6の環境構築[mysql]

★環境 OS:macOS Monterey システムオンチップ:Apple M1 仮想コンテナ:Docker Desktop 4.11(69879) ★構築環境 Ruby:3.0.3p157 (2021-11-24 re […]
EZiC

【Docker備忘録】MySQLの「max_allowed_packet」を変更

★環境 ベースOS:Windows10 仮想コンテナ:Docker データベース:MySQL 5.7系 DockerでphpMyAdminを使い、デフォルトでは10MBのアップロード制限があったので、制限を変更して大きな […]
EZiC

【Laravel備忘録】MariaDBエラー「General error: 1615 prepared statement needs to be re-prepared」

PHPフレームワーク「Laravel」において、データベース「MariaDB(MySQL)」にて発生したエラーについてです。 General error: 1615 prepared statement needs to […]

【Laravel備忘録】Laradockの「php artisan migrate」のエラー解消

「Laradock」でLaravelの環境を構築する際、「php artisan migrate」を実行したらエラーが発生しました。 その解決までの軌跡を記します。 ★環境 ベースOS:Windows10 プラットフォー […]

【MariaDBエラー備忘録】mysqldump: Couldn’t execute ‘show events’: Cannot proceed because system tables used by Event Scheduler were found damaged at server start (1577)

データベースのバックアップは重要です。 とは言うものの長らく、全データベースのバックアップをサボっていて(いつもはWordPressのプラグインでテーブルのバックアップを実施していた)、久々に「mysqldump」コマン […]...

IT家・挑戦雑記 » Blog Archive » mysqlでビットマスクを使用したテーブルから、複数レコードを抽出する方法

IT家・挑戦雑記 » Blog Archive » mysqlでビットマスクを使用したテーブルから、複数レコードを抽出する方法以下のようなビットマスクを利用したテーブルを作成した時、 それを抽出する...

MySQL:InnoDBの破損リカバリを強制実行!

MySQLのInnoDBにはDBのリカバリ機能として、MyISAMと異なり「クラッシュしても再起動するだけでリ […]

redmineにログイン出来ない ・・・ MySQLのエラー

久々にredmineにログインしようと思ったらエラーが出た。 普通に閲覧する分には問題なかったのに。 ★エラー […]

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

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

前回の記事にも書いたが、PHPを5.5にアップデートすると、 「php-mysql」が「php-mysqlnd […]

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。

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

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

PHP5.5系のアップデートでMySQLへ接続できず!!?

タイトル通り、先程PHPのバージョンを「remi-test」リポジトリから5.5系へアップデートしようとしたら、
データベース接続確立エラー」が表示されてしまった・・・

ちなみにWordPress以外で動いているPHP系サイトもMySQL接続エラー発生。
ログを見ても特に怪しいものを発見できなかった。
ただ、phpMyAdminは動作していた。。

思うに、

Replaced:
  php-mysql.i686 0:5.4.13-1.el6.remi 

---
Package php-mysql-5.4.14-1.el6.remi.i686 is obsoleted by php-mysqlnd-5.5.0-0.25.beta3.el6.remi.i686 which is already installed.

この辺が怪しい・・・

php-mysql」が廃止されて、「php-mysqlnd」に置き換わったとの事。

この「php-mysqlnd」を調べると、

※抜粋:PHP:下位互換性のない変更点

新しい mysqlnd ライブラリは、MySQL 4.1 用の41バイトの新しいパスワードフォーマットを使用します。 古い16バイトのパスワードを使うと、 mysql_connect() 系の関数は次のようなエラーメッセージを生成します。"mysqlnd cannot connect to MySQL 4.1+ using old authentication"

とある。

すなわち!

古いパスワードフォーマットだったからMySQLに接続できなくなった!!

というわけだ。

取り急ぎパッケージのダウングレードしたが、
迂闊なアップデートはやっぱり恐ろしいね~

※解決方法PHPからMySQLに接続できない:mysqlnd

スポンサードリンク

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