Estoy tratando de conectarme a mi base de datos MySQL con la Terminal en mi Apple (con PHP).
Ayer funcionó bien, y ahora de repente recibo el error en el título.
El script funciona cuando uso mi navegador para ejecutarlo (tengo XAMPP instalado), pero Terminal se niega a conectarse a la base de datos.
Aquí está el archivo que incluyo para conectar (el script funciona cuando no lo incluyo, 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());
?>
Eso debería funcionar, ya que funciona con mi navegador.
El comando que uso en la Terminal es php scriptname.php
.
localhost
socket funcione, y puede ser importante si no desea la sobrecarga adicional de enviar paquetes al enrutador antes de acceder a la base de datos.cd /tmp
y luego:sudo ln -s /var/run/mysqld/mysqld.sock mysql.sock
.También tuve este error, pero solo pude solucionarlo a través de la sugerencia aquí .
Para resumir, use:
En vez de:
La razón es que "localhost" es un nombre especial para el controlador MySQL que lo hace usar el socket UNIX para conectarse a MySQL en lugar del socket TCP.
fuente
hosts
archivo, podría faltar o estar en mal estadoEstaba teniendo el mismo problema y así es como lo solucioné:
Tuve esto y no funcionó:
Hice esto y funcionó:
En lugar de usar el servidor mysql, me conecté directamente al Unix Socket. Trabajó para mi.
fuente
El socket MySQL se encuentra, en general, en
/tmp/mysql.sock
o/var/mysql/mysql.sock
, pero probablemente PHP se encuentre en el lugar equivocado.Compruebe dónde está su zócalo con:
Cuando finaliza el updatedb:
Luego localice su php.ini:
esto generará algo como:
Edite su php.ini
Cambia las lineas:
donde /tmp/mysql.sock es la ruta a su socket.
Guarde sus modificaciones y salga de ESC + SHIFT: x
Reiniciar Apache
fuente
php.ini.default
aphp.ini
.sudo apachectl restart
Estoy en XAMPP en Mac OS X, y la solución anterior de Brian Lowe funcionó con una ligera modificación .
El archivo mysql.sock está realmente en la carpeta "/ Applications / xampp / xamppfiles / var / mysql /". Así que tuve que vincularlo tanto en / tmp como / var / mysql. No he comprobado cuál usa la línea de comandos de PHP, pero esto solucionó el problema, así que estoy feliz :-)
fuente
Mac OS X EL Capitan + MAMP Pro Haga esto
Entonces haz esto
Espero que esto te ahorre algo de tiempo.
fuente
mysql.dock
en el/tmp
que lo resolvió. ¡Gracias!La razón es que php no puede encontrar la ruta correcta de
mysql.sock
.Asegúrese de que su mysql se esté ejecutando primero.
Luego, confirme que ruta se
mysql.sock
encuentra, por ejemplo/tmp/mysql.sock
luego agregue esta cadena de ruta a php.ini:
Finalmente, reinicie Apache.
fuente
Cuando enfrenta el siguiente problema:
Conjunto de valores "mysql.default_socket" en su
/etc/php.ini
aLuego reinicie el servicio web en el administrador del servidor
fuente
Solucione el inminente error de socket de 2002, que es un enlace donde MySQL coloca el socket y donde OSX cree que debería estar, MySQL lo coloca en / tmp y OSX lo busca en / var / mysql el socket es un tipo de archivo que permite el cliente mysql / comunicación del servidor.
y entonces
fuente: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
fuente
Otra solución es arreglar la ubicación del socket en el archivo de configuración php.ini de esta manera:
Por supuesto, el enlace simbólico también funciona, por lo que es una cuestión de preferencia cuál cambiar.
fuente
Cuando instala php53-mysql usando el puerto, devuelve el siguiente mensaje, que es la solución a este problema:
fuente
Yo estaba teniendo el mismo problema
[PDOException] SQLSTATE [HY000] [2002] No existe tal archivo o directorio
[ErrorException] Advertencia: PDO :: __ construct (): [2002] No existe tal archivo o directorio (intentando conectarse a través de unix: ///var/mysql/mysql.sock) en ... htdocs / Symfony / vendor / doctrine-dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php
Entonces, la solución es hacer un enlace simbólico al archivo de calcetines resolviendo así el problema. Haga lo siguiente para resolverlo:
$ sudo mkdir / private / var / mysql /
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock
fuente: http://www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql-while-browser-works-fine/
fuente
Tengo los mismos errores. Mysql se estaba ejecutando como una aplicación independiente antes de comenzar phpMyAdmin.
Acabo de detener mysql Luego sudo / Aplicaciones / XAMPP / xamppfiles / xampp stop sudo / Aplicaciones / XAMPP / xamppfiles / xampp start
Funciono bien
fuente
Acabo de tener este problema, pero solo apareció al cargar ciertas páginas (otras páginas funcionaron bien). Resultó que estaba haciendo llamadas a MySQL después de cerrar la conexión con
mysql_close()
. Entonces, como dijo @brucenan: asegúrese de que MySQL se esté ejecutando cuando lo llame .fuente
Puede hacerlo simplemente alias el MAMP php en el terminal de Apple:
Ejemplo:
> phpmamp - v
Ahora puedes ejecutar algo como:
> phpmamp scriptname.php
Nota: Esto se aplicará solo para la sesión de terminal actual.
fuente
Como puede usar MAMP, cambie su puerto al 3306 predeterminado o use 127.0.0.1 en la base de datos.php
O con la configuración predeterminada:
fuente
El cliente mySQL intenta conectarse de manera predeterminada a través de un archivo local llamado socket en lugar de conectarse a la dirección de bucle invertido (127.0.0.1) para localhost.
La ubicación predeterminada de este archivo de socket, al menos en OSX, es
/tmp/mysql.sock
.SOLUCIÓN RÁPIDA Y MENOS ELEGANTE
Cree un enlace simbólico para engañar al sistema operativo para que encuentre el socket correcto.
SOLUCIÓN APROPIADA
Cambie la ruta del socket definida en el
startMysql.sh
archivo en/Applications/MAMP/bin
.fuente