86 votes

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 j'obtiens 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.

214voto

Tobias Cohen Points 14390

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
 

89voto

Jamie B Points 1193

Je l'ai trouvé!

Remplacez host: localhost par config / database.yml par 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
 

11voto

suga_shane Points 352

votre serveur mysql ne peut pas être en cours d'exécution. ci-dessous explique comment démarrer le serveur. ceci est un extrait de le fichier README fourni avec le mysql télécharger.

Après l'installation, vous pouvez démarrer MySQL en exécutant la commande suivante les commandes 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 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)

6voto

Magne Points 2550

"/tmp/mysql.sock" sera créé automatiquement au démarrage du serveur MySQL. Pensez donc à le faire avant de démarrer le serveur rails.

3voto

Brad Denver Points 91

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 mon emplacement de socket 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
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X