2012-04-27 146 views
10

Con el siguiente código que pueda conectarse a mysql: mysql_connect("localhost","username","");No se puede conectar a MySQL con 127.0.0.1

Pero si cambio localhost a 127.0.0.1 me sale el siguiente error:

No se puede conectar a MySQL servidor en '127.0.0.1' (13)

¿Por qué no funciona con 127.0.0.1?

+0

Esto debería ser un "Permiso denegado" cuestión. –

+0

¿Qué plataforma estás usando, Windows o Unix? –

+0

@ Jürgen Thelen - ¿Por qué debería ser? – Quentin

Respuesta

19

localhost tiene carcasa especial y utiliza conectores UNIX en lugar de TCP/IP. 127.0.0.1 no recibe ese manejo especial.

Ver the documentation:

On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file. This occurs even if a --port or -P option is given to specify a port number. To ensure that the client makes a TCP/IP connection to the local server, use --host or -h to specify a host name value of 127.0.0.1, or the IP address or name of the local server. You can also specify the connection protocol explicitly, even for localhost, by using the --protocol=TCP option.

Si no funciona cuando se utiliza TCP/IP, entonces la base de datos probablemente no está escuchando en la red. Esto generalmente es algo bueno ya que mejora la seguridad (no es que escuchar en 127.0.0.1 expone cualquier problema, pero escuchar en todas las interfaces brinda más oportunidades para los ataques).

Si realmente desea permitir las conexiones a través de la red, vea skip-networking.

1

¿Tiene una entrada en su mapeo de archivos de hosts 127.0.0.7 a localhost?

0

¿Tiene más de 1 servidor mysql instalado/en ejecución en su sistema? Si es así, especifique el número de puerto del servidor mysql al que está intentando acceder, como 127.0.0.1:3306,127.0.0.1:8889, etc.

Si no sabe si hay otras instancias del servidor mysql ejecutándose en su sistema también, por favor especifique el puerto.

+0

¿La ejecución de una segunda instancia de MySQL impide que la primera se ejecute ahora en el puerto predeterminado? – Quentin

+0

No, no impide que se ejecute, pero es posible que no pueda acceder al servidor mysql sin mencionar el número de puerto, incluso cuando se ejecuta en el puerto predeterminado cuando se ejecuta más de 1 instancia – ilight

0

Usted será capaz de acceder a él cuando se agrega los privilegios para 'root'@'127.0.0.1' en la tabla "USER_PRIVILEGES" en la base de datos

+0

No. Si ese era el problema, el error ser "Acceso denegado para el usuario", no "no se puede conectar" – Quentin

0

"information_schema" También puede intentar deshabilitar SELINUX

Cuestiones relacionadas