GNU/Linux >> Linux の 問題 >  >> Cent OS

修正方法:古い安全でない認証を使用して mysqlnd が MySQL 4.1+ に接続できない

PHP サーバーを PHP 5.3.3 から PHP 5.6.x にアップグレードした後、プレーンな CentOS 6.x 64 ビット ボックスで MySQL サーバー 5.1.x を使用すると、いくつかの新しいウェブ アプリケーションで次の mysqlnd 接続エラーが表示されました。古い安全でない認証を使用して MySQL 4.1+ に接続します

これは完全で正確なエラーです:

mysqlnd は、古い安全でない認証を使用して MySQL 4.1+ に接続できません。 管理ツールを使用して、コマンド SET PASSWORD =PASSWORD('your_existing_password') でパスワードをリセットしてください。これにより、新しい、より安全なハッシュ値が mysql.user に保存されます。このユーザーが PHP 5.2 以前で実行される他のスクリプトで使用されている場合は、my.cnf ファイルから old-passwords フラグを削除する必要がある場合があります

これは、新しい mysqlnd php クライアントが、MySQL の古いスタイルのパスワードを使用することを拒否するために発生します。そのため、old_passwords=1 を使用していても、より強力なパスワード ハッシュ セキュリティを必要とするこの新しい Web アプリでは機能しません。

古い安全でない認証を使用して mysqlnd が MySQL 4.1+ に接続できないというエラーを修正するにはどうすればよいですか?

このエラーは、次の手順に従うと簡単に修正できます:

メインの MYSQL 構成ファイルを編集します:

nano -w /etc/my.cnf

変更:

old_passwords=1

old_passwords=0

変更を適用します:

service mysqld restart

root として MySQL コンソールに接続します:

mysql -u root -p

ユーザーパスワードをリセットして、新しいハッシュを使用します:

SET PASSWORD FOR 'mysqluser'@'localhost'=PASSWORD('passwordhere');
flush privileges;

「mysqluser」と「passwordhere」を実際のユーザー名とパスワードに置き換えてください。

/etc/my.cnf に戻り、以前に行った変更を元に戻し、次のように設定します。

old_password=1

MySQL を再起動して変更を適用します:

service mysqld restart

これで、ユーザーはより強力な MySQL パスワード ハッシュを使用するはずです。
これは、次のコマンドを使用して MySQL コンソールから確認できます:

mysql> SELECT user, Length(Password) FROM mysql.user;
+------------------+------------------+
| user | Length(Password) |
+------------------+------------------+
| root | 16 |
| forum_user | 16 |
| user2 | 41 |
| lorex | 41 |
| m3user | 16 |

「41」が表示されている場合、そのユーザーは新しいハッシュを使用しており、「16」は古いハッシュを使用していることを意味します。

これで、エラー mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication が修正され、Web アプリケーションを正常に操作できるようになります。

修正方法:古い安全でない認証を使用して mysqlnd が MySQL 4.1+ に接続できない
Cent OS
  1. コマンドラインを使用してMySQLでデータベースを作成する方法

  2. MySQLにリモート接続する方法

  3. ssh コマンドを使用してリモート ホストに接続する方法

  1. CentOS 7ノードを使用してMySQLマスタースレーブセットアップをセットアップする方法は?

  2. コマンドラインを使用してMySQLデータベースをバックアップおよび復元する方法

  3. cPanel API を使用して MySQL データベースを作成する方法

  1. LinuxでMySQLのバージョンを確認する方法

  2. BMCリモートコンソール機能を使用してサーバーに接続する方法

  3. PHPを使用してMySQLに接続する方法