php - queryexception - sqlstate hy000 1045 acceso denegado para el usuario homestead localhost usando contraseña yes
Acceso denegado para el usuario ''homestead'' @ ''localhost''(utilizando contraseña: SÍ) (27)
Estoy en un Mac OS Yosemite usando Laravel 5.0.
Mientras estoy en mi entorno
local
, ejecuto
php artisan migrate
y sigo obteniendo:
Acceso denegado para el usuario ''homestead'' @ ''localhost'' (utilizando contraseña: SÍ)
Configuración
Aquí está mi .env
APP_ENV=local
APP_DEBUG=true
APP_KEY=*****
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
app / config / database.php
''mysql'' => [
''driver'' => ''mysql'',
''host'' => env(''DB_HOST'', ''localhost''),
''database'' => env(''DB_DATABASE'', ''homestead''),
''username'' => env(''DB_USERNAME'', ''homestead''),
''password'' => env(''DB_PASSWORD'', ''secret''),
''unix_socket'' => ''/tmp/mysql.sock'',
''charset'' => ''utf8'',
''collation'' => ''utf8_unicode_ci'',
''prefix'' => '''',
''strict'' => false,
]
¿Cómo evito este tipo de error?
He intentado :
1
en app / database.php
Reemplazar
localhost
con
127.0.0.1
''host''=> env(''DB_HOST'', ''localhost'')
->
''host'' => env(''DB_HOST'', ''127.0.0.1'')
Además, en .env
DB_HOST=localhost
->
DB_HOST=127.0.0.1
2
Intenta especificar el entorno
php artisan migrate --env=local
3
Verifique si MySQL se está ejecutando ejecutando
mysqladmin -u homestead -p status Enter password: secret
tengo
Uptime: 21281 Threads: 3 Questions: 274 Slow queries: 0 Opens: 327 Flush tables: 1 Open tables: 80 Queries per second avg: 0.012
Lo que significa que está funcionando.
4 4
Compruebe MySQL UNIX Socket ( este paso funciona para mí )
Cuando instala Homestead, esto crea una base de datos "homestead" predeterminada en la VM. Debería SSH en la máquina virtual de VM
homestead ssh
y ejecutar sus migraciones desde allí. Si trabaja localmente sin VM, deberá crear su base de datos manualmente. Por defecto, la base de datos debe llamarse homestead, el nombre de usuario es homestead y la contraseña es secreta.
revise este hilo en laracasts o esta publicación de blog para más detalles
si vas a
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
intente cambiar "host" en el archivo /app/config/database.php de "localhost" a "127.0.0.1". Puede encontrar más detalles y otras soluciones aquí en este thread .
Compruebe también si ha especificado el
unix_socket
correcto.
revisa este
thread
.
Compruebe MySQL UNIX Socket
Encuentra la ubicación de unix_socket usando MySQL
mysql -u homestead -p
mysql> show variables like ''%sock%'';
+-----------------------------------------+-----------------------------+
| Variable_name | Value |
+-----------------------------------------+-----------------------------+
| performance_schema_max_socket_classes | 10 |
| performance_schema_max_socket_instances | 322 |
| socket | /var/run/mysqld/mysqld.sock |
+-----------------------------------------+-----------------------------+
3 rows in set (0.00 sec)
Luego voy a config / database.php
Actualizo esta línea:
''unix_socket'' => ''/tmp/mysql.sock'',
a:
''unix_socket'' => ''/var/run/mysqld/mysqld.sock'',
Eso es. Funciona para mi como mi cuarto intento. Espero que estos pasos ayuden a alguien. :RE
¡Lo tengo! Inicie sesión como root y otorgue a homestead @ localhost los derechos de todo.
Desde tu terminal:
$ homestead ssh
$ mysql -u root -p
Enter password: secret
mysql> grant all privileges on *.* to ''homestead''@''localhost'' identified by ''secret'';
Query OK, 0 rows affected (0.00 sec)
exit
Ahora el usuario habitual de Homesteads tiene acceso a todas sus tablas y, como tal, debería poder ejecutar cosas como migraciones.
A. Después de actualizar el archivo .env con la configuración de la base de datos, borre la configuración larval "ejecutando php artisan config: clear"
B. Asegúrese de reiniciar su servidor apache / vuelva a ejecutar el comando "php artisan serve" para que su configuración surta efecto.
Algún día en el futuro. Intenta borrar tu configuración primero
php artisan config:clear.
Cierre todas las ventanas de terminal / cmd y luego reinicie terminal / CMD y esto debería eliminar el mensaje de error. A ver si funciona.
Compruebe su archivo .env, si ha editado alguna de las variables, reinicie amablemente el servidor laravel y su problema se resolverá.
Debe ejecutar el comando
$ php artisan migrate
desde Homestead, no desde su Mac.
Después de cambiar .env con la nueva configuración, debe detener el servidor y ejecutarlo nuevamente (php artisan serve). Porque laravel obtiene el entorno cuando se inicializa el servidor. ¡Si no reinicia, cambiará el .env preguntándose por qué los cambios no están teniendo lugar!
En mi caso, el error fue "causado" por mi configuración de Homestead / Vagrant sobre la cual olvidé :) intentar ejecutar la migración solo desde la línea de comandos.
En caso de usar el entorno Homestead Vagrant Box, debe ejecutar su migración desde su máquina Homestead (después de conectarse a ella utilizando ssh:
[email protected]:22
), los derechos de acceso estarán bien y permitirán que se ejecute la migración.
Inicie sesión en MYSQL: use la base de datos mysql.
Seleccione * del usuario;
Asegúrese de que su columna HOST sea correcta. Debe ser el host desde el que se está conectando (su servidor de aplicaciones), ya sea la dirección IP o el nombre DNS. También ''%'' funcionará (es decir, comodín) pero no será seguro.
La razón del acceso denegado para el error del usuario ''homestead'' @ ''localhost'' laravel 5 es el problema de almacenamiento en caché del archivo .env.php porque Laravel 5 está utilizando una configuración basada en el entorno en su archivo .env.
1)
Vaya al directorio raíz de su aplicación y abra el archivo .env (en ubuntu puede estar oculto, presione
ctrl
+
h
para mostrar los archivos ocultos y si está en la terminal, escriba:
ls -a
para mostrar los archivos ocultos) en su editor y cambie la base de datos Configuración de configuración.
luego guarde su archivo .env
DB_HOST=localhost
DB_DATABASE=laravelu
DB_USERNAME=root
DB_PASSWORD=''''
2) luego reinicie su servidor apache / servidor web. y actualiza tu página y has terminado
3) Si aún se produce un problema, intente ejecutar el siguiente comando para borrar el archivo de caché de configuración anterior.
php artisan config:clear
Ahora ya terminaste con el error
Si está utilizando el servidor web predeterminado de PHP (por ejemplo,
php artisan serve
) necesita reiniciar su servidor después de cambiar los valores de su archivo .env.
Si tiene un error al devolver algo como
PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database ''laravelu''
se debe a que está cambiando su configuración de
DB_DATABASE=laravelu
como
DB_DATABASE=laravelu
.
Entonces por ahora tú tampoco:
-
Cambie
DB_DATABASE=
[yourdatabase]
o -
crea una base de datos llamada
laravelu
en tu phpmyadmin
esto debería ser capaz de resolverlo
Solo quería publicar esto porque este problema me ha frustrado durante unas 3 horas hoy. No he probado ninguno de los métodos enumerados en las otras respuestas, aunque todos parecen razonables. De hecho, estaba a punto de probar cada una de las soluciones propuestas anteriormente, pero de alguna manera obtuve este golpe de inspiración. Esto es lo que funcionó para mí para que volviera a funcionar: YMMV:
1) Encuentra tu archivo .env. 2) Cambie el nombre de su archivo .env a otra cosa. Laravel 5 debe estar usando este archivo como una anulación para la configuración en otro lugar del marco. Cambié el nombre del mío a .env.old 3) Es posible que deba reiniciar su servidor web, pero no tuve que hacerlo.
¡Buena suerte!
TLDR:
debe detener el servidor
Ctrl
+
c
y comenzar de nuevo utilizando
php artisan serve
Detalles:
Si está utilizando Laravel, y ya ha iniciado el servidor de desarrollo local por
php artisan serve
Y después de que el servidor anterior ya se esté ejecutando, cambia las cosas relacionadas con su servidor de base de datos en el archivo .env.
Como pasar de MySQL a SQLite o algo así.
Ctrcl C
asegurarse de detener el proceso anterior, es decir,
Ctrcl C
o cualquier cosa que detenga el proceso.
Y luego reinicie Artisan Serve nuevamente, es decir, y
php artisan serve
y actualice su navegador y su problema relacionado con la base de datos se solucionará.
Esto es lo que funcionó para mí para Laravel 5.3
Todo lo que tiene que hacer es alterar su archivo .env .
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Delante de DB_DATABASE, escriba el nombre de la base de datos y delante de DB_USERNAME, use root .
Tuve el mismo problema al usar SQLite. Mi problema fue que DB_DATABASE apuntaba a la ubicación incorrecta del archivo.
Cree el archivo sqlite con el comando táctil y genere la ruta del archivo utilizando php artisan tinker.
$ touch database/database.sqlite
$ php artisan tinker
Psy Shell v0.8.0 (PHP 5.6.27 — cli) by Justin Hileman
>>> database_path(‘database.sqlite’)
=> "/Users/connorleech/Projects/laravel-5-rest-api/database/database.sqlite"
Luego envíe esa ruta exacta a la variable DB_DATABASE.
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=/Users/connorleech/Projects/laravel-5-rest-api/database/database.sqlite
DB_USERNAME=homestead
DB_PASSWORD=secret
Sin la ruta correcta, obtendrá el error de acceso denegado
Tuve el mismo problema y al final resultó que solo tenía que reiniciar el servidor y comenzar de nuevo
Ctrl + c entonces
php artisan serve
Verifique su archivo " .env " en la carpeta raíz. ¿es correcto?
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
después de config db reinicie:
php artisan serve
Si el servicio está activo antes de configurar db config.
en mi caso, después de reiniciar mi servidor, el problema desapareció.
salga / cierre el comando "php artisan serve" y
vuelva a ejecutar el comando "php artisan serve" .
estoy usando laravel 5. * Supongo que tengo un archivo llamado
.env
en la raíz del proyecto que se parece a esto:
APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Y eso fue sobre escribir la configuración de bd para que pueda eliminar esos vars de configuración para que laravel tome la configuración en / config o configure su configuración aquí.
Hice el segundo y me funciona :)
si está utilizando
php artisan migrate
NOT from vagrant box pero desde la máquina host, entonces debe definir dentro de
.env
la ip de la caja
192.168.10.10
y, obviamente, establecer permiso para alojar al usuario desde su ip algo así como
grant all privileges on *.* to ''homestead''@% identified by ''secret'';
en archivo
.env
DB_HOST=192.168.10.10
DB_DATABASE=homestead
DB_USERNAME=homestead
simplemente cambie estas cosas en el archivo .env de su carpeta raíz.
DB_DATABASE=your_db_name
DB_USERNAME=your_db_user_name
DB_PASSWORD=''your_db_password''
A mi me funciono.
tengo encontrar solución
-
Vaya al directorio raíz de su aplicación y abra el archivo .env (en ubuntu puede estar oculto, así que presione ctrl + h para mostrar los archivos ocultos) en su editor y cambie la configuración de la base de datos. luego guarde su archivo .env
-
luego reinicie su servidor apache / servidor web. y actualiza tu página y has terminado
- Si aún se produce un problema, intente ejecutar el siguiente comando para borrar el archivo de caché de configuración anterior.
Esto funcionó para mí gl ...
Dos formas de resolverlo
Primera forma (no recomendado)
Abra el archivo de configuración de su base de datos (raíz_laravel / config / database.php) y busque el siguiente bloque de código.
''host'' => env(''DB_HOST'', ''localhost''),
''database'' => env(''DB_DATABASE'', ''blog''),
''username'' => env(''DB_USERNAME'', ''root''),
''password'' => env(''DB_PASSWORD'', ''''),
Cambie el bloque de código de la siguiente manera
''host'' => ''yourHostName'',
''database'' => ''YourDatabastName'',
''username'' => ''YoutDatabaseUsername'',
''password'' => ''YourDatabasePassword'',
Segunda forma (Recomendado por Laravel)
Verifique su raíz de Laravel allí tiene una llamada de archivo .env si no existe, busque .env.example, cópielo / renómbrelo como .env después de eso, ¡el archivo se ve mal!
APP_ENV=local
APP_DEBUG=true
APP_KEY=someRandomNumber
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
Modifique el siguiente bloque de la siguiente manera
DB_HOST=yourHostName
DB_DATABASE=yourDatabaseName
DB_USERNAME=yourDatabaseUsername
DB_PASSWORD=youPassword
Ahora funcionará bien.