/var/log

技術系のあれこれ。※内容は個人の発言であり、所属する組織を代表するものではありません。

Connection refused(/tmp/mysql.sock)対策

VPSで運用中のUbuntuにおいて
rubyからruby-mysql使ってDBアクセスを試みたらエラーとなった..

$ irb
irb(main):001:0> require 'mysql'
=> true
irb(main):002:0> 
irb(main):003:0* client = Mysql.connect('localhost','ユーザ名','パスワード','DB名')
Errno::ECONNREFUSED: Connection refused - "/tmp/mysql.sock"


ちなみに環境としてはこんな感じです.

$ gem list

*** LOCAL GEMS ***

bigdecimal (1.1.0)
io-console (0.3)
json (1.5.4)
minitest (2.5.1)
rake (0.9.2.2)
rdoc (3.9.5)
ruby-mysql (2.9.10)

$ rbenv versions
* 1.9.3-p385

原因は割とはっきりしていて"localhost"を指定しているのがまずいらしいです.
なのでちょこっとソースを変更したら直りました.

$ irb
irb(main):001:0> 
irb(main):002:0* 
irb(main):003:0* require 'mysql'
=> true
irb(main):004:0> client = Mysql.connect('127.0.0.1','ユーザ名','パスワード','DB名')
=> (略)


まぁ本当はこの辺の接続情報をじかに書くのはよくないと思うので
実際にコーディングしているときには問題にならないと思います.