J'ai un ancien projet construit en utilisant Laravel 4.2. Je reçois l'erreur suivante
PDOException (1045) SQLSTATE [HY000] [1045] Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: OUI)
J'ai googlé et essayé chaque réflexion mais je ne pouvais pas y remédier
. fichier env
APP_KEY=az9tq5VHQCV9g5m2CsgY89jtijrCMgEA
DB_Host=localhost
DB_DATABASE=billing
DB_USERNAME=root
DB_PASSWORD=1234
database.php
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'billing',
'username' => 'root',
'password' => '1234',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
Quelqu'un peut-il me guider là où je fais mal?
Remarque: Avant de poser la question, j'ai essayé de mettre à jour composer update ainsi que la plupart des réponses stackoverflow.
Mise à jour
J'ai testé cette connexion en créant un fichier php
<?php
$servername = "localhost";
$username = "root";
$password = "1234";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
je vais me connecter avec succès
Laravel 4.x ne prend même pas en charge les fichiers ENV. Il suffit de voir si les paramètres dans ./config/[env name] /database.php sont corrects.
L'erreur dit tout, Laravel ne peut pas se connecter à une base de données. Vérifiez privileledges et assurez-vous que la base de données existe. Aussi, essayez de vous connecter à une base de données avec le client, comme MySQL Workbench en utilisant les mêmes identifiant et mot de passe. Cela vous donnera une idée de ce que vous pouvez faire pour résoudre ce problème. Si vous ne pouvez pas le faire, ce n'est pas Laravel issue.
Essaye ça
fichier .env
APP_ENV=local
DB_CONNECTION=mysql
DB_Host=localhost
DB_DATABASE=billing
DB_USERNAME=root
DB_PASSWORD=1234
config/database.php
default' => env('DB_CONNECTION', 'mysql'),
'mysql' => array(
'driver' => 'mysql',
'Host' => env('DB_Host','localhost'),
'database' => env('DB_DATABASE','billing'),
'username' => env('DB_USERNAME','root'),
'password' => env('DB_PASSWORD', '1234'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
)
Sinon, extrayez le fichier .env et vérifiez la connexion
DB_Host=localhost
a fonctionné pour moi sur Laravel 5.7
Je viens de rencontrer le même problème sur une nouvelle installation Laravel. Le problème était que je me connectais à mon serveur mysql localhost ubuntu au lieu du serveur mysql de la boîte vagabonde qui était sur sa propre adresse IP "192.168.10.10". Je suis passé à cela et tout a fonctionné un charme :)
Essayez .ENV
APP_ENV=local
DB_CONNECTION=mysql
DB_Host=localhost
DB_DATABASE=billing
DB_USERNAME=root
DB_PASSWORD=1234
Et Supprimer les fichiers de cache de Root/bootstrap/cache/files et exécuter L'application
Je teste en Laravel 5.6.33 et je vois cette erreur: "Accès refusé à l'utilisateur 'root' @ 'localhost'", mais le nom d'utilisateur et le mot de passe sont correct. Dans cette version, je pense que c'est un BUG, je change DB_Host, de 127.0.0.1 en localhost et ça marche!
DB_Host = 127.0.0.1 (avant)
DB_Host = localhost (après)
J'ai résolu le problème. Problème avec le préfixe. Dans Postgrey Sql, nous avons des préfixes dans la base de données, nous devons donc ajouter également le préfixe en connexion afin que cela puisse aider quelqu'un
database.php
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'billing',
'username' => 'root',
'password' => '1234',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'bill',
),
Assurez-vous que votre .env
utilise le bon numéro de port. Si vous utilisez phpMyAdmin
, voici comment procéder:
MariaDB defaults to 3306
et
MySQL defaults to 3308
Alors changez votre .env
pour utiliser le port 3308 pour MySQL. J'espère que ça aide!
Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: OUI)
L'erreur venait? La raison possible est votre connexion à la base de données.Si la base de données n'est pas connectée, lancez l'erreur.
Vérifiez donc la base de données releted toutes les choses et si toutes les choses sont correctes.
Si non résolu, changez
DB_Host=127.0.0.1 TO DB_Host=localhost
Laravel 6 vient de mettre le secret au lieu de l'espace vide.
DB_PASSWORD=secret
J'ai rencontré le même problème en apprenant laravel utilisant Homestead, le problème s'est produit lorsque j'essaie d'ouvrir une page. Il a essayé de se connecter à la base de données mais a été rejeté, bien que je puisse me connecter à la base de données en utilisant mysql ligne de commande. Le problème était que je supposais à tort que depuis la demande de serveur Web Homestead de l'invité à l'hôte, la même chose est également la même avec myqsl, mais apparemment ce n'est pas le cas. Homestead a son propre service mysql, donc mon problème a été résolu par : - Homestead ssh dans la machine invitée - mysql -u root -p pour se connecter à la ligne de commande mysql, le mot de passe par défaut est "secret" - créez la base de données, mais vous avez besoin pour changer votre mot de passe d'abord, changez simplement le même mot de passe que dans le mot de passe root de mysql dans votre machine hôte pour plus de commodité - quittez le mysql cli et - php artisan migrate pour créer les tables - rafraîchissez votre navigateur, maintenant il devrait pouvoir se connecter à votre base de données