Me gustaría analizar el mysql
tráfico. En este momento, todas las solicitudes mysql se envían al socket MySQL unix:
unix 2 [ ACC ] STREAM LISTENING 3734388 15304/mysqld /var/run/mysqld/mysqld.sock
Estoy tratando de deshabilitar ese socket para forzar a MySQL a usar el socket de red en su lugar en el loopback. Probé comentando todas las socket
directivas en el my.cnf
y debian.cnf
archivos y reiniciarse MySQL, pero no había ninguna diferencia.
¿Cómo puedo desactivar el socket MySQL unix para forzar MySQL a través de la red?
Otros detalles: estoy corriendo MySQL 5.1
en ubuntu 10.04
.
Precisiones sobre la pregunta
Dado que muchas personas sugirieron habilitar el zócalo de red, me gustaría aclarar mi pregunta señalando que la dirección de enlace ya estaba habilitada bind-address = 127.0.0.1
y que hay una conexión de escucha disponible:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 15601/mysqld
Todavía no veo ningún intento de conexión 127.0.0.1:3306
desde mi aplicación web (sitio web de Drupal).
Actualizado con la respuesta
De hecho, parece que el problema proviene del mysqli
conector que utiliza Drupal ( .ht_config.php
para aquellos que estén interesados). Se configuró: mysqli://drupal:***@localhost/drupal
cambiando localhost
a 127.0.0.1
solucionado el problema (es decir, Drupal ahora está haciendo conexiones al zócalo de red).
--protocol
... mira la respuesta de Jonathan.En Linux y otros * nixes, MySQL asumirá que desea utilizar un socket si se conecta al host "localhost" (que sería el nombre de host predeterminado).
Puede anular esto de 3 maneras: 1) Especifique un nombre de host diferente como 127.0.0.1 (
mysql -h 127.0.0.1
) o el nombre de host real de su servidor 2) Especifique que desea usar TCP y no un socket (mysql --protocol tcp
)También puede hacer que el valor predeterminado sea mi edición de my.cnf para que tenga esto ([cliente] significa cualquier cliente:
Puede ver la descripción completa de cómo MySQL decide cómo conectarse aquí:
http://dev.mysql.com/doc/refman/5.5/en/connecting.html
fuente
¿No es realmente un problema del cliente? Si usa el programa mysql Puede usar el
--protocol
interruptor. Desde la página del manualAcabo de intentar
mientras monitorizo el puerto 3306 con
tcpdump -i lo tcp port 3306
y puedo ver el tráfico, mientras que si solo ejecuto(Correctamente) no veo tráfico en el puerto 3306.
EDITAR:
Ahora que nos dice que está usando DRUPAL, la solución es relativamente fácil.
Ve
sites/<sitename>
osites/default
edita elsettings.php
archivoEncontrarás una estructura como esta
Cambie
'localhost'
a'127.0.0.1'
y guarde el archivo.fuente
no control
que estaba siendo dramático. Podría modificar el.ht_config.php
archivo y solucionar el problema..ht_config.php
lugar desettings.php
. No sé por qué (el equipo de desarrollo solicitó que debería ser así). Ahora el problema es que Drupal parece estar leyendo el.ht_config.php
archivo en cada solicitud (porque si lo cambio, los cambios se tienen en cuenta de inmediato), lo que no puede ayudar con las actuaciones. Buscaremos una forma de almacenar en caché esas configuraciones en la capa de aplicación, pero ese es un problema diferente.--protocol=socket
si tienes unahost
entrada en la[client]
sección de la.my.cnf
que dawrong or unknown protocol
error. (mysql 5.7.13)Esto puede sonar un poco loco
Intente configurar el archivo de socket en una ruta absoluta cuya ruta reside en otra máquina
http://dev.mysql.com/doc/refman/5.0/en/server-options.html#option_mysqld_socket
De lo contrario, no puede omitir este comportamiento predeterminado porque debe existir un archivo de socket para que mysqld pueda comunicarse.
fuente
Edite my.cnf y agregue la directiva
o su IP preferida para que sea accesible a través de la red. Reinicie mysql después para que funcione.
fuente
El cliente php mysqli utilizará el archivo de socket Unix en lugar de la red tcp cuando pase el valor NULO o la cadena "localhost" ( http://www.php.net/manual/en/mysqli.construct.php )
parece que el cliente sqlyog siempre usa la red tcp incluso cuando llena "localhost" en ella
fuente
Tuve que eliminar /etc/my.cnf (después de hacer una copia de seguridad), luego reinicié el servidor. Entonces pude conectarme con un enchufe y el error desapareció.
fuente