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/MySQLRubyで書かれているため低速ではあるもののコンパイラは不要。


MySQL/Rubyの方が高速とのことで、初めはこちらを使おうと考えていました。ところが、作者の方によれば"MySQL/Ruby終了のお知らせ"とのこと。Ruby/MySQLをインストールすることにしました。
MySQL/Ruby終了のお知らせ : http://www.slideshare.net/tmtm/mysqlruby

インストール方法

公式サイトを参考にインストールしていきます。
http://www.tmtm.org/ruby/mysql/

大きな流れとしては

  1. DL・解凍
  2. 解凍して出てきたtest.rbを用いてMySQLに接続できるか確認
  3. インストール

となっています。

MySQLUNIXドメインソケットを調べるというステップもあるようですが、今回はWindows環境の為、必要がないようでした。

解凍
# cd ruby-mysql-0.2.6
# tar zxvf ruby-mysql-0.2.6.tar.gz
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

無事に実行できたようです。

インストール
# ruby ./install.rb

これでインストール完了!

余談

"Can't connect to local MySQL server through socket"に関連して、このページが分かりやすかったです!
http://www.hi-ho.ne.jp/tsumiki/book_sup2.html




おしまい。