タグ: PHP

  • Client does not support authentication protocol が表示されてMySQLに接続できない

    MySQL5.1とPHP5.2.17で接続しようとしたところ、下記のエラーが表示されて、PHPからMySQLに接続できなかった。
    (これを使いたいわけではなく、かなり前に作った検証環境・・・)

    このエラーは、MySQLのバージョンにより、認証方式が変更されたことによる影響。
    PHP側のMySQLクライアントのバージョンが古いのが原因。

    ■エラーメッセージ

    Client does not support authentication protocol requested by server; consider upgrading MySQL client.
    

    PHP側のMySQLクライアントを新しいものにするのが一番だが、 できないときはMySQLの設定を変更することで回避可能。

    対応方法としては、my.cnfに古いパスワード形式の指定をする。

    [mysqld]
    (・・・中略・・・)
    old_passwords = 1
    

    my.cnfの中から、[mysqld] の箇所を探して、そこに「old_passwords=1」の記述を入れる。
    設定変更した後は、MySQLサーバのプロセスを再起動する。

    テストしても、同じ様になる場合は、念のため、ウェブサーバも再起動する。
    (自分の環境では、Apacheも再起動しないとダメだった。)