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

J’ai un environnement Rails3 standard, 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

Erreur que j’obtiens lors de l’exécution de rake db:migrate pour créer une firebase database 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 

Sûr que c’est quelque chose de simple qui me manque.

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 

Je l’ai trouvé!

Changez l’ host: localhost dans config / database.yml pour l’ host: 127.0.0.1 pour que les rails se connectent via TCP / IP au lieu du socket local.

 development: adapter: mysql2 host: 127.0.0.1 username: root password: xxxx database: xxxx 

Votre serveur mysql peut ne pas fonctionner. Ci-dessous explique 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 exécutant les commandes suivantes dans une fenêtre de terminal. Vous devez disposer de privilèges d’administrateur pour 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 commandes 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) 

“/tmp/mysql.sock” sera créé automatiquement au démarrage du serveur MySQL. Alors n’oubliez pas de le faire avant de démarrer le serveur de rails.

Avec mon installation de MAMP sur OSX, le socket MySQL se trouve dans /Applications/MAMP/tmp/mysql/mysql.sock . J’ai utilisé locate mysql.sock pour trouver mon emplacement de socket MySQL.

Donc mon config/database.yml ressemble à ceci:

 development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /Applications/MAMP/tmp/mysql/mysql.sock 

Si vous êtes sur Mac OSX,

L’emplacement par défaut du socket Unix MySQL est différent sur Mac OS X et Mac OS X Server, selon le type d’installation choisi

Emplacement des sockets MySQL Unix sous Mac OS X par type d’installation

  • Programme d’installation de paquets depuis MySQL —————— / tmp / mysql.sock

  • Tarball de MySQL ——————————- / tmp / mysql.sock

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

Changez simplement 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

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

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 dans votre serveur MySql. Pour trouver votre emplacement de 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 car j’ai installé XAMPP dans mon OS X version 10.9.5 pour une application PHP. Choisissez l’un des emplacements de socket par défaut ici.

Je choisis pour les applications rails par défaut:

 socket: /tmp/mysql.sock 

Pour mes applications PHP, j’installe XAMPP alors je mets mon socket ici:

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

OTHERS Socket Location dans OS X

Pour MAMPP:

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

Pour l’installateur de paquets 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 parameters 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.

J’ai eu le même problème, mais aucune des réponses n’a donné 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, pour que votre /tem/mysql.sock soit créé, pour cela vous lancez: mysql.server start
  2. Une fois cela fait, allez dans votre config/database.yml et ajoutez le socket: /tmp/mysql.sock
  3. Run rake:dbmigrate une fois de plus et tout devrait bien rake:dbmigrate

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é

Si vous exécutez MYSQL via XAMPP:

  1. Ouvrez le fichier de configuration mysql 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 firebase database du projet Open Rails: myproject / config / database.yml

  4. Ajoutez le socket config à la configuration de la firebase database 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 de rails

Prendre plaisir 🙂

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

Ans: $ sudo service mysql start

Sur ma machine, le service mysqld s’est arrêté, c’est pourquoi cela m’a posé le même problème.

1: – Aller au terminal et taper

 sudo service mysqld restart 

Cela va redémarrer le service mysqld et créer un nouveau fichier sock à l’emplacement requirejs.