php - rehusada - sqlstate[hy000][2002] connection refused
SQLSTATE[HY000][2002] Se rechazó la conexión dentro de Laravel homestead (5)
Usando Mac OS X y Homestead 2.2.1 con Laravel 5.2.
En terminal (dentro de Homestead en la carpeta de mi proyecto) puedo hacer php artesanal para ver todos los comandos disponibles. Cuando trato de ejecutar php artesanal migrate obtengo un error de conexión:
SQLSTATE[HY000] [2002] Connection refused
Configuré un proyecto Laravel con estos ajustes .env
DB_HOST=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=homestead
DB_PASSWORD=secret
También probé localhost para DB_HOST y root para DB_USERNAME y DB_PASSWORD. ¡Y todas las variaciones posibles de estas juntas!
En Sequel Pro (aplicación de administración db) PUEDO conectarme con esta configuración
Host 127.0.0.1
Username homestead
Password secret
Database tcv
Port 33060
Pero esta base de datos está obviamente vacía, porque no puedo migrar desde la terminal ...
Por lo que puedo ver, es un problema de configuración, ya que puedo conectarme con Sequel Pro. Pero sinceramente, no tengo idea de lo que está mal configurado.
Gracias por la ayuda !!
EDITAR
Por alguna razón, obtengo el mismo error de SQLSTATE[HY000] [2002] Connection refused
cuando muevo mi proyecto a MAMP y ejecuto la migración de php artesanal.
Ahora estoy completamente perdido ...
Esta es una solución simple. Su base de datos mysql ha perdido su conexión con el servidor. Si está ejecutando un servidor local, ejecute esto en su terminal:
mysqld
Eso reconectará su base de datos. Luego (si estás usando homebrew) ejecuta:
brew services start mysql
Esto se conecta automáticamente a su base de datos al iniciar sesión.
Estaba teniendo este problema. Cuando me conecto con Sequel Pro, necesito usar 33060 como puerto, pero en el archivo .env tiene que ser 3306. Tenía 33060 en el archivo .env. Cambió a 3306 y funcionó.
Es posible que su ''mysql'' no haya comenzado o no esté en el puerto ''3306''
Problema
En Laravel tiene config/database.php
donde se encuentra toda la configuración para la conexión. También tiene un archivo .env
en el directorio raíz de su proyecto (que todos usan para ahorrar tiempo). Esto contiene variables que puede usar para todo el proyecto.
En un proyecto L5 estándar, la sección MySql de config/database.php
ve así:
''mysql'' => [
''driver'' => ''mysql'',
''host'' => env(''DB_HOST'', ''localhost''),
''database'' => env(''DB_DATABASE'', ''forge''),
''username'' => env(''DB_USERNAME'', ''forge''),
''password'' => env(''DB_PASSWORD'', ''''),
''charset'' => ''utf8'',
''collation'' => ''utf8_unicode_ci'',
''prefix'' => '''',
''strict'' => false,
''engine'' => null,
],
¡Note que no hay un puerto configurado!
Aunque en mi archivo .env
había establecido DB_PORT=33060
. Pero ese value (3306)
nunca se leyó en config/database.php
.
Así que no seas tonto como yo y te olvides de revisar el archivo database.php
.
Simplemente agregue
''port'' => env(''DB_PORT'', 3306),
a su config / database.php y establezca ese valor en .env como este DB_PORT=33060
Me encontré con esto y descubrí que al cambiar esto en el archivo .env de 127.0.0.1 a localhost lo solucioné.
DB_HOST = localhost