web-dev-qa-db-fra.com

Ruby on Rails 3 Impossible de se connecter au serveur MySQL local via le socket '/tmp/mysql.sock' sous OSX

J'ai un environnement standard 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.

L'erreur que je rencontre lors de l'exécution de rake db:migrate pour créer une base de données est la suivante:

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

config/database.yml a

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

bien sûr, il me manque quelque chose de simple.

79
Jamie Buchanan

Tout d’abord, pour trouver votre fichier de socket:

mysqladmin variables | grep socket

Pour moi, cela donne:

| socket                                            | /tmp/mysql.sock                                                                                                        |

Ensuite, ajoutez une ligne à votre config/database.yml:

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

Je l'ai trouvé!

Remplacez Host: localhost dans config/database.yml par Host: 127.0.0.1 pour que Rails se connecte via TCP/IP au lieu du socket local.

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

Votre serveur mysql n'est peut-être pas en cours d'exécution. Vous trouverez ci-dessous comment démarrer le serveur. Ceci est un extrait du fichier README fourni avec le téléchargement de mysql.

Après l’installation, vous pouvez démarrer MySQL en lançant les commandes Suivantes dans une fenêtre de terminal. Vous devez disposer de privilèges d'administrateurpour effectuer cette tâche.

Si vous avez installé l'élément de démarrage, utilisez cette commande:

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

Si vous n'utilisez pas l'élément de démarrage, entrez la séquence de commande suivante:

 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)
10
suga_shane

"/tmp/mysql.sock" sera créé automatiquement lorsque vous démarrez le serveur MySQL. Pensez donc à le faire avant de démarrer le serveur Rails.

6
Magne

Si vous êtes sur Mac OSX,

L'emplacement par défaut du socket MySQL Unix est différent sous Mac OS X et Mac OS X Server en fonction du type d'installation choisi.

Emplacement des sockets MySQL Unix sur Mac OS X par type d'installation

  • Installation du paquet depuis MySQL ------------------/tmp/mysql.sock

  • Tarball depuis MySQL -------------------------------/tmp/mysql.sock

  • MySQL fourni avec Mac OS X Server -------/var/mysql/mysql.sock

Il suffit donc de changer votre database.yml dans socket: /tmp/mysql.sock pour qu'il pointe au bon endroit, en fonction du système d'exploitation et du type d'installation que vous utilisez.

3
Musili

Avec mon installation de MAMP sur OSX, le socket MySQL est situé à /Applications/MAMP/tmp/mysql/mysql.sock. J'ai utilisé locate mysql.sock pour trouver l'emplacement de ma prise MySQL.

Donc, mon config/database.yml ressemble à:

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

Ce sont des options pour résoudre ce problème:

Option 1: changez votre hôte en 127.0.0.1

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

Option 2: Il semble que vous ayez 2 connexions à votre serveur MySql . Pour trouver l'emplacement de votre fichier de socket, procédez comme suit:

mysqladmin variables | grep socket

pour moi donne:

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!

ou

mysql --help 

Je reçois cette erreur parce que j'ai installé XAMPP dans mon application OS X version 10.9.5 pour PHP. Choisissez l'un des emplacements de socket par défaut ici.

J'ai choisi les applications Rails par défaut:

socket: /tmp/mysql.sock

Pour mes applications PHP, j'installe XAMPP, je configure donc mon socket ici:

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

Autres emplacements de sockets sous OS X

Pour MAMPP:

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

Pour l'installateur de paquet de MySQL:

socket: /tmp/mysql.sock

Pour MySQL fourni avec Mac OS X Server:

socket: /var/mysql/mysql.sock

Pour Ubuntu:

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

Option 3: Si tous ces paramètres ne fonctionnent pas, vous pouvez supprimer l'emplacement de votre socket:

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

J'espère que cela vous aidera.

3
akbarbin

L'emplacement par défaut du socket MySQL sous Mac OS X est /var/mysql/mysql.sock.

2
morgant

J'ai eu le même problème, mais aucune des réponses ne donnait pas à pas ce que je devais faire. Cette erreur se produit parce que votre fichier de socket n'a pas encore été créé. Tout ce que tu dois faire est:

  1. Démarrez votre serveur mysql afin que votre /tem/mysql.sock soit créé. Pour cela, vous exécutez: mysql.server start
  2. Une fois que cela est fait, allez à votre config/database.yml et ajoutez le socket: /tmp/mysql.sock
  3. Exécutez rake:dbmigrate une fois de plus et tout devrait fonctionner correctement
1
luizParreira

J'ai trouvé que le problème est que je n'ai qu'un environnement de production. Je n'ai pas d'environnement de développement ou de test.

En ajoutant 'Rails_ENV = production' pour donner la commande

bundle exec rake redmine:plugins:migrate Rails_ENV=production

ça a marché

0
Paul Taylor

Vous avez un problème avec ceci: Impossible de se connecter au serveur MySQL local via socket '/var/run/mysqld/mysqld.sock'

Ans: $ Sudo service mysql start

0
Binni Bharadiya

Si vous utilisez MYSQL via XAMPP:

  1. Ouvrez le fichier de configuration mysql de XAMPP (sous OSX):

    /Applications/XAMPP/etc/my.cnf

  2. Copiez le chemin du socket:

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

  3. Fichier de configuration de la base de données du projet Open Rails: Myproject/config/database.yml

  4. Ajoutez la configuration du socket à la configuration de la base de développement:

-> 

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. Redémarrer le serveur Rails

Prendre plaisir :)

0
mpinvidio

Sur ma machine, le service mysqld s'est arrêté, c'est pourquoi il me posait le même problème.

1: - Allez au terminal et tapez

Sudo service mysqld restart

Cela redémarrera le service mysqld et créera un nouveau fichier sock à l’emplacement requis.

0
Nikhil Mohadikar