Ruby/MySQLのインストール
Rubyスクリプトを書いていて、MySQLに接続したくなったため、探してきました。
RubyからMySQLを使おうとした場合、Ruby/MySQLか、あるいはMySQL/Rubyなどといったライブラリが必要になります。すごく…似てます……、と思ったら、どちらもとみたまさひろさんが作者とのこと。
Ruby/MySQL : http://www.tmtm.org/ruby/mysql/
MySQL/Ruby : http://www.tmtm.org/mysql/ruby/
http://www.gesource.jp/programming/ruby/database/mysql.htmlによれば、二つのライブラリの特徴は、以下のように分かれているようです。
MySQL/RubyはCで書かれているため高速ではあるもののコンパイラが必要。
Ruby/MySQLはRubyで書かれているため低速ではあるもののコンパイラは不要。
MySQL/Rubyの方が高速とのことで、初めはこちらを使おうと考えていました。ところが、作者の方によれば"MySQL/Ruby終了のお知らせ"とのこと。Ruby/MySQLをインストールすることにしました。
MySQL/Ruby終了のお知らせ : http://www.slideshare.net/tmtm/mysqlruby
インストール方法
公式サイトを参考にインストールしていきます。
http://www.tmtm.org/ruby/mysql/
大きな流れとしては
- DL・解凍
- 解凍して出てきたtest.rbを用いてMySQLに接続できるか確認
- インストール
となっています。
MySQLのUNIXドメインソケットを調べるというステップもあるようですが、今回はWindows環境の為、必要がないようでした。
test.rbの実行
・コマンド
# ruby ./test.rb localhost root ぱすわーど
・エラー
「ソケット'/tmp/mysql.sock'を通じてローカルのMySQLサーバーに接続することが出来ません」
"localhost"の部分を"127.0.0.1"にしたことで解決。けれども再び別のエラー
・コマンド
# ruby ./test.rb 127.0.0.1 root ぱすわーど
・エラー
Client does not support authentica tion protocol requested by server; consider upgrading MySQL client (Mysql::Error )
サーバとクライアント間のMySQLのバージョン差異から発生したエラーと読めます。パスワードのハッシュの持ち方が違うらしく、認証プロトコルの互換性がないようです。
MySQLのリファレンスを参考に、MySQLにログインした上で以下のコマンドを実行。
mysql> set password = old_password('ぱすわーど'); mysql> flush privileges;
今度こそtest.rbを実行!
# ruby ./test.rb 127.0.0.1 root ぱすわーど connect.............ok create_db...........ok create_table........ok insert..............ok select..............ok update..............ok drop_table..........ok drop_db.............ok close...............ok
無事に実行できたようです。
余談
"Can't connect to local MySQL server through socket"に関連して、このページが分かりやすかったです!
http://www.hi-ho.ne.jp/tsumiki/book_sup2.html
おしまい。