Ruby on Rails 3 No se puede conectar al servidor MySQL local a través del socket ‘/tmp/mysql.sock’ en OSX

Tengo un entorno Rails3 estándar, 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

Error que recibo al ejecutar rake db:migrate para crear una base de datos es:

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

config / database.yml tiene

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

Seguro que es algo simple que me estoy perdiendo.

Primero, para encontrar su archivo de socket:

 mysqladmin variables | grep socket 

Para mí, esto da:

 | socket | /tmp/mysql.sock | 

Luego, agregue una línea a su config/database.yml :

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

¡Lo encontré!

Cambiar el host: localhost en config / database.yml al host: 127.0.0.1 para hacer que los Rails se conecten a través de TCP / IP en lugar del socket local.

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

Es posible que su servidor mysql no se esté ejecutando. A continuación se explica cómo iniciar el servidor. Este es un extracto del archivo README que viene con la descarga de mysql.

Después de la instalación, puede iniciar MySQL ejecutando los siguientes comandos en una ventana de terminal. Debe tener privilegios de administrador para realizar esta tarea.

Si ha instalado el elemento de inicio, use este comando:

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

Si no usa el elemento de inicio, ingrese la siguiente secuencia de comando:

  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” se creará automáticamente cuando inicie el servidor MySQL. Así que recuerda hacer eso antes de iniciar el servidor de Rails.

Con mi instalación de MAMP en OSX, el socket de MySQL se encuentra en /Applications/MAMP/tmp/mysql/mysql.sock . Utilicé locate mysql.sock para encontrar mi ubicación de socket MySQL.

Entonces mi config/database.yml ve así:

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

Si estás en Mac OSX,

La ubicación predeterminada para el socket MySQL Unix es diferente en Mac OS X y Mac OS X Server, dependiendo del tipo de instalación que elija

Ubicaciones de socket Unix de MySQL en Mac OS X por tipo de instalación

  • Instalador de paquete de MySQL —————— / tmp / mysql.sock

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

  • MySQL incluido con Mac OS X Server ——- / var / mysql / mysql.sock

Así que simplemente cambie su database.yml en socket: /tmp/mysql.sock para que apunte al lugar correcto según el sistema operativo y el tipo de instalación que esté utilizando

La ubicación predeterminada para el socket MySQL en Mac OS X es /var/mysql/mysql.sock .

Estas son opciones para solucionar este problema:

Opción 1: cambia tu host a 127.0.0.1

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

Opción 2: Parece que tienes 2 conexiones en tu servidor MySql. Para encontrar su ubicación de archivo de socket haga esto:

 mysqladmin variables | grep socket 

para mí da:

 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! 

o

 mysql --help 

Recibo este error porque instalé XAMPP en mi OS X Versión 10.9.5 para la aplicación PHP. Elija una de las ubicaciones de socket predeterminadas aquí.

Elijo aplicaciones de Rails predeterminadas:

 socket: /tmp/mysql.sock 

Para mis aplicaciones PHP, instalo XAMPP así que configuro mi socket aquí:

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

OTHERS Ubicación del socket en OS X

Para MAMPP:

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

Para el instalador de paquetes de MySQL:

 socket: /tmp/mysql.sock 

Para MySQL incluido con Mac OS X Server:

 socket: /var/mysql/mysql.sock 

Para Ubuntu:

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

Opción 3: si todas esas configuraciones no funcionan, puede eliminar su ubicación de socket:

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

Espero que esto te ayude.

He tenido el mismo problema, pero ninguna de las respuestas dio paso a paso lo que necesitaba hacer. Este error ocurre porque su archivo de socket no se ha creado aún. Todo lo que tienes que hacer es:

  1. Comience su servidor mysql, entonces su /tem/mysql.sock es creado, para hacer eso ejecuta: mysql.server start
  2. Una vez hecho esto, vaya a su config/database.yml y agregue el socket: /tmp/mysql.sock
  3. Ejecutar rake:dbmigrate una vez más y todo debe entrenar bien

Descubrí que el problema es que solo tengo un entorno de producción. No tengo un entorno de desarrollo o prueba.

Al agregar ‘RAILS_ENV = producción’ para dar el comando

 bundle exec rake redmine:plugins:migrate RAILS_ENV=production 

funcionó

Si está ejecutando MYSQL a través de XAMPP:

  1. Abra el archivo de configuración de XAMPP mysql (en OSX):

    /Aplicaciones/XAMPP/etc/my.cnf

  2. Copie la ruta del socket

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

  3. Archivo de configuración de la base de datos del proyecto Open Rails: myproject / config / database.yml

  4. Agregue la configuración del socket a la configuración de la base de datos de desarrollo:

->

 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. Reiniciar servidor de carriles

Disfruta 🙂

Usted tiene un problema con esto: No se puede conectar al servidor MySQL local a través del socket ‘/var/run/mysqld/mysqld.sock’

Respuesta: $ sudo service mysql start

En mi máquina, el servicio de mysqld se detuvo, por eso me estaba dando el mismo problema.

1: – Ir a la terminal y escribir

 sudo service mysqld restart 

Esto reiniciará el servicio mysqld y creará un nuevo archivo sock en la ubicación requerida.