27 votos

MySQL no se puede conectar a través de "localhost", sólo 127.0.0.1

esto es algo de un misterio para mí. La única manera que se puede conectar a MySQL es si me llaman a través de "127.0.0.1" ... por ejemplo, mi PHP conectar script NO funcionará con localhost

Estoy ejecutando Mac OS X Lion, construido en apache2, MySQL, PHP, phpMyAdmin

mysqladmin:

count                             0
debug-check                       FALSE
debug-info                        TRUE
force                             FALSE
compress                          FALSE
character-sets-dir                (No default value)
default-character-set             auto
host                              (No default value)
no-beep                           FALSE
port                              0
relative                          FALSE
socket                            (No default value)
sleep                             0
ssl                               FALSE
ssl-ca                            (No default value)
ssl-capath                        (No default value)
ssl-cert                          (No default value)
ssl-cipher                        (No default value)
ssl-key                           (No default value)
ssl-verify-server-cert            FALSE
user                              (No default value)
verbose                           FALSE
vertical                          FALSE
connect-timeout                   43200
shutdown-timeout                  3600
plugin-dir                        (No default value)
default-auth                      (No default value)

28voto

Raffael Luthiger Puntos 1617

MySQL intenta conectar con el socket de unix si le para conectarse a "localhost". Si le para conectarse a 127.0.0.1 que están obligando a que se conecte a la toma de red. Así que probablemente usted tiene MySQL configurado para escuchar sólo a la toma de red y no en el sistema de archivos de socket.

¿Qué es exactamente el mal con el socket de unix es difícil decir. Pero os recomiendo leer esta página en la guía de referencia de MySQL. Esto debería ayudarle.

ACTUALIZACIÓN: Basado en la actualización de la pregunta: El parámetro "socket" debe ser algo como esto: "/var/lib/mysql/mysql.calcetín". Esta página en el Manual de Referencia tiene algo más de información.

Aquí tenemos el comienzo de mi /etc/my.cnf archivo:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

El archivo debe ser similar. Entonces el problema debe ser resuelto. No te olvides de reiniciar el servidor MySQL antes de probarla.

8voto

Silverfire Puntos 644

Usted puede tener habilitada para IPv6, es muy posible localhost resuelve el ipv6 localhost, que no está definido en su msql config.

ive también tuvo un problema en el que tuve que agregar 'localhost' en lugar de '127.0.0.1' a la permitida subredes para ese usuario, no entiendo por qué (yo estaba usando ipv4 y se fue hace un rato) pero vale la pena intentarlo.

2voto

ninetwozero Puntos 129

Podría usted comprobar mysql/conf/my.conf (la estructura de directorios debe ser casi el mismo en OSx) para ver si skip-networking es sin comentar? Si es así, añadir un # en la parte delantera de la línea y reiniciar el mysql-server.

De hecho tuve un problema similar hace un tiempo (a pesar de que no estaba en OSx), así que pensé que podría ser vale la pena un tiro.

1voto

Es localhost definido en su /private/etc/hosts archivo?

1voto

Terry Puntos 11

Yo tenía este problema y yo no podía entenderlo. He intentado todo lo que podía multa fue en vano.

Me enteré de que tenía una .netrc en /root/ que había información en ella.

Me eliminó y el problema ha desaparecido.

Capaz de iniciar sesión en mysql con mysql-uroot-p sin problema.

Sé que este es un viejo post, pero espero que esto ayude a alguien.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: