167 votos

Warning: mysql_connect (): [2002] No tal archivo o directorio (tratando de conectarse a través de unix:///tmp/mysql.sock) en

Estoy tratando de conectarme a mi base de datos MySQL con el Terminal en mi Apple (Con PHP).

Ayer funcionaba bien, y ahora de repente me aparece este error (Véase el título). No tengo ni idea de cómo resolverlo. He dedicar todo mi tiempo libre tratando de hoy =(

El script funciona cuando uso el Navegador para ejecutar (tengo XAMPP instalado), pero la Terminal se niega a conectarse a la base de datos.

Su eis el archivo que tengo que incluir a conectar (en el Script funciona cuando yo no incluye esto, pero luego no se conecta a la base de datos):

<?php
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("FNB1C_data") or die(mysql_error());
?>

Que debe ser de la derecha, ya con mi Navegador me puedo conectar cuando ejecute la secuencia de comandos.

El comando que uso es "php scriptname.php".

322voto

Brian Lowe Puntos 2490

Por alguna razón mysql en OS X se presenta la ubicación de los socket necesario presentar un poco mal, pero gracias a un verdadero asistente sé (que es, Gavin) la solución es tan simple como la creación de un vínculo simbólico.

Usted puede tener un socket (que aparecen como un archivo de longitud cero) como /tmp/mysql.sock o /var/mysql/mysql.sock pero 1 o más aplicaciones se busca en el otro lugar.

En lugar de mover el zócalo y editar los archivos de configuración y recuerde guardar los archivos editados local y lejos de los servidores donde las rutas son correctas, simplemente, crear un enlace simbólico para que el mac se encuentra el socket necesario, incluso cuando se trata de buscar en el lugar equivocado!

Si usted tiene /tmp/mysql.sock pero no /var/mysql/mysql.sock entonces...

cd /var 
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
ln -s /tmp/mysql.sock mysql.sock

Si /var/mysql/mysql.sock pero no /tmp/mysql.sock luego

cd /tmp
ln -s /var/mysql/mysql.sock mysql.sock

Usted necesitará permisos para crear el directorio y el enlace, tan sólo el prefijo de los comandos anteriores, con sudo si es necesario.

Espero que esto ayude. Se ha resuelto este problema exacto para mí en 3 macs hasta el momento.

234voto

luismreis Puntos 1841

También tuvo este error, pero podrías arreglarlo solo a través de la sugerencia aquí.

Para resumir, utilice:

127.0.0.1

En lugar de:

localhost

La razón es que "localhost" es un nombre especial para el controlador de mysql por lo que es usar el socket unix para conectarse a mysql en lugar del un socket tcp.

19voto

Caio Puntos 121

Estaba teniendo el mismo problema y esto es cómo lo solucioné:

Tenía esto y no funcionó:

$con = mysql_connect('localhost', 'root', '1234');

Hice esto y funcionó:

$con = mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', '1234');

En lugar de utilizar el servidor de mysql, que conectado directamente a la toma de Unix. Trabajó para mí.

14voto

noun Puntos 168

Socket de MySQL se encuentra, en general, en /tmp/mysql.sock o /var/mysql/mysql.sock, pero probablemente PHP busca en el lugar equivocado.

1) Comprobar dónde está su encaje con:

     sudo /usr/libexec/locate.updatedb

2) Cuando el updatedb se termina:

     locate mysql.sock

3) a Continuación, busque el fichero php.ini:

     php -i | grep php.ini

esta salida será algo como:

     Configuration File (php.ini) Path => /opt/local/etc/php54
     Loaded Configuration File => /opt/local/etc/php54/php.ini

4) Editar el fichero php.ini

     sudo vim /opt/local/etc/php54/php.ini

5) Cambiar las líneas:

     pdo_mysql.default_socket=/tmp/mysql.sock
     mysql.default_socket=/tmp/mysql.sock
     mysqli.default_socket = /tmp/mysql.sock

donde /tmp/mysql.sock es la ruta de acceso al socket.

6) Guardar los cambios y salir de la ESC + MAYÚS: x

7) Reinicia Apache

     sudo apachectl stop
     sudo apachectl start

10voto

Nirav Mehta Puntos 91

Estoy en XAMPP en Mac OS X y solución de Brian Lowe anteriormente trabajó con una ligera modificación.

El archivo mysql.sock es realmente en "/ aplicaciones/xampp/xamppfiles/var/mysql /" carpeta. Así debían vincularse en/tmp y /var/mysql. No he revisado cuál es utilizado por línea de comandos PHP, pero esto lo hizo el arreglo, así que estoy feliz :-)

sudo su
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /tmp/mysql.sock
mkdir /var/mysql
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /var/mysql/mysql.sock

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X