web-dev-qa-db-ja.com

Ruby on Rails 3 OSXのソケット '/tmp/mysql.sock'を介してローカルMySQLサーバーに接続できない

標準のRails3環境、RVM 1.2.9、Rails 3.0.5、Ruby 1.9.2p180、MySQL2 Gem 0.2.7、mysql-5.5.10-osx10.6-がありますx86_64

rake db:migrateを実行してデータベースを作成するとエラーが発生します:

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

config/database.ymlには

development:
  adapter: mysql2
  Host: localhost
  username: root
  password: xxxx
  database: xxxx

それは私が見逃しているシンプルなものです。

82
Jamie Buchanan

まず、ソケットファイルを見つけます。

mysqladmin variables | grep socket

私にとって、これは以下を提供します:

| socket                                            | /tmp/mysql.sock                                                                                                        |

次に、config/database.ymlに行を追加します。

development:
  adapter: mysql2
  Host: localhost
  username: root
  password: xxxx
  database: xxxx
  socket: /tmp/mysql.sock
205
Tobias Cohen

それを見つけた!

Config/database.ymlのHost: localhostHost: 127.0.0.1に変更して、RailsをローカルソケットではなくTCP/IP経由で接続します。

development:
  adapter: mysql2
  Host: 127.0.0.1
  username: root
  password: xxxx
  database: xxxx
82
Jamie Buchanan

Mysqlサーバーが実行されていない可能性があります。以下にサーバーの起動方法を説明します。これは、mysqlダウンロードに付属のREADMEファイルからの抜粋です。

インストール後、ターミナルウィンドウで次のコマンドを実行してMySQLを起動できます。このタスクを実行するには、管理者権限が必要です。

スタートアップアイテムをインストールした場合は、次のコマンドを使用します。

 Shell> Sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
 (ENTER YOUR PASSWORD, IF NECESSARY)
 (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE Shell)

スタートアップアイテムを使用しない場合は、次のコマンドシーケンスを入力します。

 Shell> cd /usr/local/mysql
 Shell> Sudo ./bin/mysqld_safe
 (ENTER YOUR PASSWORD, IF NECESSARY)
 (PRESS CONTROL-Z)
 Shell> bg
 (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE Shell)
11
suga_shane

MySQLサーバーを起動すると、「/ tmp/mysql.sock」が自動的に作成されます。したがって、Railsサーバーを起動する前に忘れずに実行してください。

6
Magne

Mac OSXを使用している場合、

MySQL Unixソケットのデフォルトの場所は、選択したインストールタイプに応じてMac OS XとMac OS X Serverで異なります

インストールタイプ別のMac OS X上のMySQL Unixソケットの場所

  • MySQLのパッケージインストーラー------------------/tmp/mysql.sock

  • MySQLからのTarball -------------------------------/tmp/mysql.sock

  • Mac OS X ServerにバンドルされているMySQL -------/var/mysql/mysql.sock

そのため、socket: /tmp/mysql.sockdatabase.ymlを変更して、適切な場所を指すようにします使用しているOSおよびインストールタイプ

3
Musili

OSXにMAMPをインストールすると、MySQLソケットは/Applications/MAMP/tmp/mysql/mysql.sockに配置されます。 locate mysql.sockを使用して、MySQLソケットの場所を見つけました。

したがって、私のconfig/database.ymlは次のようになります。

development:
  adapter: mysql2
  Host: localhost
  username: root
  password: xxxx
  database: xxxx
  socket: /Applications/MAMP/tmp/mysql/mysql.sock
3
Brad Denver

これらはこの問題を修正するオプションです:

オプション1:ホストを127.0.0.1に変更します

staging:
  adapter: mysql2
  Host: 127.0.0.1
  username: root
  password: xxxx
  database: xxxx
  socket: your-location-socket

オプション2:サーバーMySqlに2つの接続があるようです。ソケットファイルの場所を見つけるには、次の操作を行います。

mysqladmin variables | grep socket

私にとっては:

mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' exists!

または

mysql --help 

PHPアプリケーション用にOS Xバージョン10.9.5にXAMPPをインストールしたため、このエラーが発生します。ここでデフォルトのソケットの場所のいずれかを選択します。

デフォルトのRailsアプリを選択します:

socket: /tmp/mysql.sock

PHPアプリの場合、XAMPPをインストールして、ソケットをここに設定します。

socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

OS Xのその他のソケットの場所

MAMPPの場合:

socket: /Applications/MAMP/tmp/mysql/mysql.sock

MySQLのパッケージインストーラーの場合:

socket: /tmp/mysql.sock

Mac OS X ServerにバンドルされているMySQLの場合:

socket: /var/mysql/mysql.sock

buntuの場合:

socket: /var/run/mysqld/mysql.sock

オプション3:これらの設定がすべて機能しない場合は、ソケットの場所を削除できます。

staging:
  # socket: /var/run/mysqld/mysql.sock

これがお役に立てば幸いです。

3
akbarbin

Mac OS X上のMySQLソケットのデフォルトの場所は/var/mysql/mysql.sockです。

2
morgant

私は同じ問題を抱えていましたが、答えはどれも、私がする必要があることを一歩一歩説明しませんでした。このエラーは、ソケットファイルがまだ作成されていないために発生します。あなたがしなければならないことは次のとおりです。

  1. Mysqlサーバーを起動して、/tem/mysql.sockを作成します。これを実行するには、mysql.server startを実行します
  2. それが完了したら、config/database.ymlに移動してsocket: /tmp/mysql.sockを追加します
  3. rake:dbmigrateをもう一度実行すると、すべて正常に動作するはずです
1
luizParreira

問題は、実稼働環境しか持っていないことです。開発環境またはテスト環境がありません。

「Rails_ENV = production」を追加してコマンドを提供する

bundle exec rake redmine:plugins:migrate Rails_ENV=production

動いた

0
Paul Taylor

次のような問題があります:ソケット '/var/run/mysqld/mysqld.sock'を介してローカルMySQLサーバーに接続できません

回答:$ Sudo service mysql start

0
Binni Bharadiya

XAMPPを介してMYSQLを実行している場合:

  1. XAMPP mysql構成ファイルを開きます(OSX上):

    /Applications/XAMPP/etc/my.cnf

  2. ソケットパスをコピーします。

    ソケット= /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

  3. Railsプロジェクトのデータベース構成ファイルmyproject/config/database.ymlを開きます

  4. ソケット構成を開発データベース構成に追加します。

->

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: difiuri_falcioni
  pool: 5
  username: root
  password:
  Host: localhost
  socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
  1. Railsサーバーを再起動します

楽しい :)

0
mpinvidio

私のマシンではmysqldサービスが停止したため、同じ問題が発生していました。

1:-ターミナルに移動して入力

Sudo service mysqld restart

これにより、mysqldサービスが再起動され、必要な場所に新しいsockファイルが作成されます。

0