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ビットです.
mysql 4.1以降のバージョンでPassword関数を使って生成されたパスワードは41ビットのはずです.
これで41ビットの長いパスワードになりますが、特別な必要があればold_password関数は16ビットを生成します.ここで特に注意したいのは、mysqlのiniプロファイルでこの行を注釈する必要があることです.
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ビットかどうかを て、 に したことを します. が わったら してください