¿Alguien sabe por qué mi /var/run/mysqld/mysqld.sock
archivo de socket no estaría en mi computadora cuando instalo (o reinstalo) MySQL 5.1?
En este momento, cuando intento iniciar un servidor con mysqld, recibo errores como Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
, pero la creación de un archivo en blanco con ese nombre (como se sugiere en los foros de ubuntu) no tuvo éxito.
Tenía mysql y postgres funcionando bien hasta que me actualicé a natty hace un tiempo; He pasado horas recorriendo ambas bases de datos tratando de descubrir qué está pasando. Puedo renunciar a postgres, pero no puedo trabajar sin una copia de trabajo de mysql.
La parte más extraña: uso Kubuntu, y entiendo que KDE usa mysql para almacenar permisos de usuario, etc. No estoy experimentando ningún problema de permisos extraño; ¿Puedo tomar esto como que (de alguna manera?) MySQL realmente está funcionando?
¿Quizás estos archivos de socket viven en un lugar diferente en natty? ¿Sería más fácil reinstalar el sistema operativo fresco? En este punto, estoy abierto a cualquier sugerencia que deje de perder el tiempo.
fuente
/var/run/mysqld/mysqld.sock
creará ese archivo . Como dijo @Paul, debes eliminar cualquier archivo que coloques en esa ubicación.Respuestas:
Un archivo de socket no contiene datos, sino que lo transporta. Es un tipo de archivo especial e inusual creado con llamadas / comandos especiales del sistema. No es un archivo ordinario.
Es como una tubería que el servidor y los clientes pueden usar para conectarse e intercambiar solicitudes y datos. Además, solo se usa localmente. Su importancia es simplemente como una ubicación de cita acordada en el sistema de archivos.
Crear un archivo antiguo y ponerlo en esa ubicación puede interferir con el servidor que lo crea ... y, por lo tanto, evitar que los clientes locales se conecten al servidor.
Mi recomendación es eliminar cualquier archivo que coloque en la ubicación. El archivo de socket especial es creado por el servidor.
fuente
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
Cuando especifique
host=localhost
, el cliente mysql intentará iniciar sesión en el servidor mysql utilizando un canal con nombre unix que requiere un.sock
archivo.Esto puede evitarse especificando host = 127.0.0.1. Esto hará que el cliente mysql use TCP para conectarse al servidor.
Tomado de la documentación de MySQL :
fuente
mysql.sock
desaparecer sin razón alguna en todas las versiones de MySQL con las que he trabajado (volver a 4.0). Cuando esto sucede, me conecto así, pero lo uso en--protocol=tcp
lugar de--port
. Cuando cierra mysql, el servicio busca el archivo socket. Por lo tanto, correrservice mysql stop
fallaría. Para evitar el dolor de cabeza del archivo socket que faltaba, corromysqladmin -h127.0.0.1 --protocol=tcp -uroot -p shutdown
. ¡Oh, por cierto, +1!Un socket es un pseudoarchivo especial utilizado para la transmisión de datos mediante lectura y escritura, no almacenamiento de datos.
El archivo de socket se crea cuando se inicia el servicio y se elimina cuando se termina el servicio. La ubicación del archivo se define
/etc/my.cnf
así:fuente
En mi caso, la ejecución
mysqld_safe
creó un nuevomysqld.sock
archivo.Probablemente no recibirá un aviso de regreso, pero si reinicia su sesión, habrá un archivo mysqld.sock en alguna parte. Encuéntralo con
fuente
Tuve el mismo problema con el mysqld.sock faltante. Fui al directorio que contenía mysql, es decir,
/usr/bin
en mi caso. Entonces emití el comandoEl doble mysql no es un error tipográfico, sino que mysql es una base de datos que siempre estará allí en una nueva instalación de MySQL. No sé si
--host
,--password
o--port
están necesitaba, pero ya que trabajó para mí el uso de estos parámetros que les incluyo. Una vez que apareció MySQL, entré en la tabla de usuario y configuré la contraseña para root. Una vez que apareció MySQL, se creó el archivo de socket que faltaba. Espero que esto ayude a alguien ya que luché durante días.fuente
Si está utilizando nginx php-fastcgi y recibió un error 502 Bad Gateway , entonces debe mirar la configuración de su host virtual en el archivo de configuración nginx. Debe establecer o corregir el
fastcgi_pass
parámetro.fastcgi_pass
Es la variable para establecer la conexión de socket entre nginx y php CGI.Otro punto de problema es que el script de inicio binario podría perder las siguientes entradas (importantes) abiertas con:
nano /usr/bin/php-fastcgi
El contenido completo de mi script de inicio / usr / bin / php-fastcgi:
fuente