タグ: MySQL

  • 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も再起動しないとダメだった。)

  • MySQLのデータファイルの”.ibd”は何か

    ストレージエンジンに、Innodbのデータファイル。
    通常は、ibdata1ファイルにデータが保存されるが、MySQLの設定を変更し、
    テーブル別にInnodbのデータファイルを分ける設定をするとできるファイル。

    userlist.frm ・・・ テーブルの構造が記録されたファイル
    userlist.ibd ・・・ Innodbのデータが記録されたファイル(DBのテーブルデータの中身)

    Innodbでテーブル別にファイルを分ける設定は、my.iniで以下の設定をする(されている)。

    [mysqld]
    innodb_file_per_table
    
  • Windows にMySQL Serverをインストールしたときのデータ保存先

    Windows にMySQL Serverをインストールしたときのデータ保存先は、以下のフォルダ。

    C:\Program Files\MySQL\MySQL Server 5.7\data
    

    なお、5.7の部分は、インストールしたMySQL Serverのバージョンによって変わる。

  • 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も再起動しないとダメだった。)

  • MySQLのエディションの違い(Enterprise と Community)

    業務系システム使いそう、というか運用することになりそう。そこで再度、MySQLのエディションの違いを調べてみたので、メモ。

    MySQLには、大きく分けて、商用版とGPLライセンスのフリー版の2種類が存在する。

    商用版は、サポートレベルに応じて、Standard、Enterprise、MySQL Cluster Carrier Gradeの3種類がある。 他に組み込み用のEmbededの枠がある。

    GPLライセンスのフリー版は、Community Edition。

    商用(Standard等)とフリーの大きな違いは、安定性とサポート。 フリーのCommunity Editionには、実験的な要素が組み込まれており、 安定性に欠ける場合がある。

    またサポートは、商用の方はサポート窓口による対応やパッチの適用があるが、 Community Edtionにはサポート窓口がなく、コミュニティでの情報収集などにより、 解決する必要がある。
    パッチについても、提供はなく、必要に応じて自分たちで穴を埋める必要がある。

    ということだ。作ったところと運用することが異なる場合、セキュティパッチなどを当てる時などの確認が面倒くさくなりそうだ。まぁ、それはMySQLだからとかいうわけじゃないが。

    ■参考
    https://www-jp.mysql.com/products/
    http://news.mynavi.jp/articles/2006/10/31/mysql/

  • tweetnestのアーカイブを日本語(2byte文字)対応させる

    tweetnestでつぶやきをアーカイブしていたのだが、長いつぶやきのアーカイブが途中で切れていた。いろいろと調べてみると、ある一定の文字数を超えると、途中できれたり化けたりしていた。

    原因を探ってみると、tweetnestでつぶやきを格納しているDBの絡むがvarchar(255)で設定されていた。varchar(255)だと、日本語で140文字も格納できない。そのため、途中でデータが切れていたようである。他のカラムの設定を見てみると、text型で設定されているところもあるので、少々アバウトだが、対象のカラムをtext型に変換してみた。変換に使ったSQL文は以下。

    mysql> alter table tn_tweets modify text text not null;
    

    これで拡張は終了。次のつぶやき取得から、日本語で140文字あってもちゃんとアーカイブされる。

    おまけ。
    通しで作業をするとこんな感じ。

    mysql> use tweetnest;
    mysql> desc tn_tweets;
    +--------------+---------------------+------+-----+---------+----------------+
    | Field        | Type                | Null | Key | Default | Extra          |
    +--------------+---------------------+------+-----+---------+----------------+
    | id           | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | userid       | int(10) unsigned    | NO   |     |         |                |
    | tweetid      | bigint(20) unsigned | NO   |     |         |                |
    | type         | tinyint(4)          | NO   |     | 0       |                |
    | time         | int(10) unsigned    | NO   |     |         |                |
    | text         | varchar(255)        | NO   | MUL |         |                |
    | source       | varchar(255)        | NO   |     |         |                |
    | favorite     | tinyint(4)          | NO   |     | 0       |                |
    | extra        | text                | NO   |     |         |                |
    | coordinates  | text                | NO   |     |         |                |
    | geo          | text                | NO   |     |         |                |
    | place        | text                | NO   |     |         |                |
    | contributors | text                | NO   |     |         |                |
    +--------------+---------------------+------+-----+---------+----------------+
    13 rows in set (0.07 sec)
    
    mysql> alter table tn_tweets modify text text not null;
    Query OK, 1287 rows affected (0.28 sec)
    Records: 1287  Duplicates: 0  Warnings: 0
    
    mysql> desc tn_tweets;
    +--------------+---------------------+------+-----+---------+----------------+
    | Field        | Type                | Null | Key | Default | Extra          |
    +--------------+---------------------+------+-----+---------+----------------+
    | id           | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | userid       | int(10) unsigned    | NO   |     |         |                |
    | tweetid      | bigint(20) unsigned | NO   |     |         |                |
    | type         | tinyint(4)          | NO   |     | 0       |                |
    | time         | int(10) unsigned    | NO   |     |         |                |
    | text         | text                | NO   | MUL |         |                |
    | source       | varchar(255)        | NO   |     |         |                |
    | favorite     | tinyint(4)          | NO   |     | 0       |                |
    | extra        | text                | NO   |     |         |                |
    | coordinates  | text                | NO   |     |         |                |
    | geo          | text                | NO   |     |         |                |
    | place        | text                | NO   |     |         |                |
    | contributors | text                | NO   |     |         |                |
    +--------------+---------------------+------+-----+---------+----------------+
    13 rows in set (0.00 sec)
    
    mysql>