Falta mysql.sock; produciendo OperationalError: (2002, “No se puede conectar al servidor MySQL local a través del socket ‘/tmp/mysql.sock’ (2)”)

En primer lugar, juro que he examinado todas las preguntas que hacen referencia a este error. Casi todas las soluciones que alguien ofrece son diferentes, y nadie parece entender las razones sistémicas del error. Lo que necesito yo, y muchas personas en la web que encontramos este problema común, es una explicación de lo que realmente está mal.

Básicamente, cuando bash correr:

python manage.py shell from django.db import connection cursor = connection.cursor() 

con Django 1.4 y python 2.7.3, obtengo el siguiente error: OperationalError: (2002, “No se puede conectar al servidor MySQL local a través del socket ‘/tmp/mysql.sock‘ (2)”)

Creo que mi archivo settings.py es correcto. Y todo lo que necesito instalado está instalado. Aquí está el settings.py:

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'database_name.mwb', # Or path to database file if using sqlite3. 'USER': 'user', # Not used with sqlite3. 'PASSWORD': 'PASS', # Not used with sqlite3. 'HOST': '/tmp/mysql.sock', # Set to empty string for localhost. Not used with sqlite3. 'PORT': '', # Set to empty string for default. Not used with sqlite3. }} 

Después de sufrir semanas de buscar respuestas en la web, incluidas todas en stackoverflow, llegué a la conclusión de que el problema real que estoy experimentando es que no hay ningún archivo mysql.sock en mi computadora, a pesar de que mysql está instalado. Entonces, la verdadera pregunta es ¿cómo consigo uno? La respuesta puede ser vergonzosamente simple.

Cuando corro

 cd / sudo find . -name ".sock" 

No consigo nada Y sí, he instalado mysql 5.25 en mi mac osx lion. Definitivamente está instalado:

 sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist com.mysql.mysqld: Already loaded 

Sin embargo, corriendo:

 mysql 

rendimientos

 -bash: mysql: command not found 

Después de mucho tiempo, encontré este error: http://bugs.mysql.com/bug.php?id=4174 .. ¿cuál es la solución?

Revelación completa: sólo soy un progtwigdor. Realmente no sé nada acerca de las computadoras. Entonces, no sé nada sobre mysql, bases de datos o sockets. Creo que esta pregunta requerirá que alguien que realmente entiende las computadoras lo arregle. Como, aunque parece obvio ahora, ha tomado mucho tiempo formular este error como si se tratara de un socket faltante. El 99% de las personas en la web con este error no parecen estar abordándolo de esta manera.

Tiene el cliente mysql instalado pero no el servidor mysql que maneja las conexiones para el cliente. Necesitas instalar el servidor mysql y ejecutarlo.

Por lo que puedo decir, es una de las dos cosas:

  1. Su servidor MySQL no se está ejecutando, o
  2. Se está ejecutando, pero no está configurado para usar /tmp/mysql.sock como su socket

En lo que respecta a 2, creo que esa es la configuración predeterminada para un MySQL recién instalado, pero no está mal para verificar. Intenta mirar los contenidos de /etc/my.cnf . Verifique si hay una línea que tenga este aspecto: socket=/path/to/socket – donde /path/to/socket is, como dice la ruta del archivo del socket. Si existe tal entrada y la ruta del archivo es diferente de /tmp/mysql.sock , ha encontrado su problema. Cambia esa línea o la configuración de Django para que coincidan.

Nota: En caso de que no encuentre /etc/my.cnf , puede crearlo usted mismo y agregar la configuración de socket adecuada (es decir, solo agregue la línea socket=/tmp/mysql.sock ) solo para asegurarse de que esté correctamente configurado.

En lo que respecta a 1, puede seguir las instrucciones disponibles aquí y asegurarse de que su servidor MySql esté funcionando.

¡Buena suerte!

Como respondí aquí :

con

 mysql_config --socket 

Descubrí dónde está mi zócalo mysql, lo aplico:

 'HOST': '/Applications/MAMP/tmp/mysql/mysql.sock',