rubyでruby-mysqlを使ってMySQLに接続したいのですが、

ruby-mysql-2.9.2/lib/mysql/protocol.rb:No such file or directory - tmp/mysql.sock
というエラーが出てしまいます。mysql.sockが無いというのはわかるのですが、解決法が分かりません。
検索してみると、ソケットがどうたらだったので、
$ mysqladmin -p version
で、
UNIX Socket /var/run/mysqld/mysqld.sock
となってました。関係あるかは分かりませんが参考までに

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/05/05 17:00:07
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント100pt

次のページに解説がありますが、ホスト名には「127.0.0.1」を指定してみてください。

http://slashdot.jp/~tamura/journal/39102


あるいは、以下のページにあるように、my.cnfでソケットの場所を指定し直してからMysqlを再起動しても大丈夫です。

[mysqld]
socket=/tmp/mysql.sock

[client]
socket=/tmp/mysql.sock

http://blogs.dion.ne.jp/koko/archives/4344187.html#more

id:no-reply

ありがとうございます

うまくいきました。

ですが、

$ mysql -u hoge -p

Enter passwd:*********

ERROR2002 (HY000):Can't connect to local MySQL server through socket '/tmp/mysql.sock'(2)

となってしまい、ログインできないです><

2010/05/05 15:43:07
  • id:rouge_2008
    > $ mysql -u hoge -p
    > Enter passwd:*********
    > ERROR2002 (HY000):Can't connect to local MySQL server through socket '/tmp/mysql.sock'(2)

    コマンドからの操作でエラーになるのですね。
    2つ目の方法の場合は、[mysqld]と[client]の両方を変更してください。

    [mysqld]
    socket=/tmp/mysql.sock

    [client]
    socket=/tmp/mysql.sock

    ※元々の記述は、削除するかコメントアウトして完全に無効にしてください。
  • id:rouge_2008
    こちらの方法の方が良いかもしれません。

    「(略)ruby-mysql-2.9.2/lib/mysql.rb」の20行目にある以下の行をコメントアウトするか削除して、「MYSQL_UNIX_PORT」の値に元々のソケットの場所を指定します。
    ※my.cnfの設定もすべて元に戻してください。

    # MYSQL_UNIX_PORT = "/tmp/mysql.sock" # UNIX domain socket filename
    MYSQL_UNIX_PORT = "/var/run/mysqld/mysqld.sock" # UNIX domain socket filename


    http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/38585
  • id:no-reply
    うおおおおおおお
    MYSQL_UNIX_PORT = "/var/run/mysqld/mysqld.sock" # UNIX domain socket filename
    でうまくいきました!
    ありがとうございます!
  • id:rouge_2008
    いるかとたくさんのポイントをありがとうございました。m(__)m

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません