mysqlリモートアクセスデータベースに失敗したソリューション

1842 ワード

wampでサービス環境を配置しphp開発を行い、リモートデータベースにアクセスする際、接続できません.以下のエラーを報告します.
533 Could not connect:mysqlnd cannot connect to MySQL 4.1+using old authenticationこのエラーが発生したのは、新しい環境のphpバージョンが41ビットのパスワードしかサポートされていないのに対し、mysqlのパスワードフォーマットが古い16ビットであるためです.データベースのセキュリティチェックを強化するには、リモート接続データベースは41ビットでなければなりません.16ビットのパスワードはデータベースツールnavicatなどで操作できますが、リモートプログラムのリモート接続mysqlは失敗します.ソリューションは次のとおりです.
mysqlへのログイン
 
パスワードがあれば、ログイン方法は次のとおりです.
mysql -u root -h 127.0.0.1 -p
 
どのデータベースを使用するか、どのデータベースを使用するかについては、次のようにします.
mysql> show databases; +--------------------+ | Database           | +--------------------+ | information_schema | | mysql              | | test               | | wt                 | +--------------------+ 4 rows in set (0.00 sec)
mysql> use test Database changed mysql>
次のコマンドを実行すると表示されるパスワードは16ビットです.select user,password from mysql.user;
mysql 4.1以降のバージョンでPassword関数を使って生成されたパスワードは41ビットのはずです.update mysql.user set password=Password( "newpassword" ) where user= "username" ;
これで41ビットの長いパスワードになりますが、特別な必要があればold_password関数は16ビットを生成します.ここで特に注意したいのは、mysqlのiniプロファイルでこの行を注釈する必要があることです.1 # Default to using old password format for compatibility with mysql 3.x 2 # clients (those using the mysqlclient10 compatibility package). 3 #old_passwords=1 # , 41 , update mysql.user set password=Password("newpassword" ) where user= "username" ;
この があれば、どのように しても16ビットのパスワードになります. が したらクエリーコマンドを し、パスワードの さが41ビットかどうかを て、 に したことを します. が わったら してください