SQLSTATE [HY000] [1045] Accès refusé pour l'utilisateur 'nom d'utilisateur' @ 'localhost' en utilisant CakePhp
Je suis nouveau en PHP et CakePHP. Trouver des problèmes alors que le câblage de ma base de données à l'aide de CakePhp.
Voici ma configuration de l'application.
Je suis sur Bitnami WAMP pile 5.4.40-0
J'utilise CakePhp 3.0.4 pour créer un site web mvc de l'application
Entrée pour les sources de données de Mon app.php fichier
/**
* Connection information used by the ORM to connect
* to your application's datastores.
* Drivers include Mysql Postgres Sqlite Sqlserver
* See vendor\cakephp\cakephp\src\Database\Driver for complete list
*/
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
/**
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//'port' => 'nonstandard_port_number',
'username' => 'test2',
'password' => 'computer',
'database' => 'jobs',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
/**
* Set identifier quoting to true if you are using reserved words or
* special characters in your table or column names. Enabling this
* setting will result in queries built using the Query Builder having
* identifiers quoted when creating SQL. It should be noted that this
* decreases performance because each query needs to be traversed and
* manipulated before being executed.
*/
'quoteIdentifiers' => false,
/**
* During development, if using MySQL < 5.6, uncommenting the
* following line could boost the speed at which schema metadata is
* fetched from the database. It can also be set directly with the
* mysql configuration directive 'innodb_stats_on_metadata = 0'
* which is the recommended value in production environments
*/
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
],
J'ai déjà créé une table de base de données appelé emplois, selon les conventions de CakePhp. L'utilisateur test2 a les mêmes privilèges comme la racine admin.
Mais quand je suis en cours d'exécution de la faire cuire toute la commande. J'obtiens l'erreur suivante
2015-07-01 06:24:56 Error: [PDOException] SQLSTATE[HY000] [1045] Access denied for user 'test2'@'localhost' (using password: YES)
Stack Trace:
C:\Bitnami\wampstack-5.4.40-0\apache2\htdocs\myjobs\vendor\cakephp\cakephp\src\Database\Driver\PDODriverTrait.php(48): PDO->__construct('mysql:host=127....', 'test2', 'computer', Array)
C:\Bitnami\wampstack-5.4.40-0\apache2\htdocs\myjobs\vendor\cakephp\cakephp\src\Database\Driver\Mysql.php(89): Cake\Database\Driver\Mysql->_connect('mysql:host=127....', Array)
C:\Bitnami\wampstack-5.4.40-0\apache2\htdocs\myjobs\vendor\cakephp\cakephp\src\Database\Schema\BaseSchema.php(46): Cake\Database\Driver\Mysql->connect()
PROBLÈME RÉSOLU (MISE À JOUR)
J'ai suivi Ankit et Spencer directions.
J'ai eu quelques problèmes.
- D'accueil de mon utilisateur n'a pas localhost, c'était un générique %. Changé, alors mysql commencé à refuser les connexions.
- J'ai désactivé mon pare-feu et a constaté que le port est différent de 3306. Donc modifié l'entrée dans app.php. Maintenant, ma demande est cuit 🙂
source d'informationauteur saurav
Vous devez vous connecter pour publier un commentaire.
Ce message d'erreur signifie généralement que le mot de passe que vous utilisez ne correspond pas à ce que MySQL pense que le mot de passe de l'utilisateur que vous êtes connecté, ou d'une correspondance d'utilisateur MySQL n'existe pas (n'a pas été créé).
MySQL, un utilisateur est identifié par un nom d'utilisateur (
test2
) et l'accueil (localhost
).Le message d'erreur que vous obtenez identifier les
user
(test2) ethost
(localhost) valeurs...Vérifier pour voir si l'utilisateur existe, à l'aide de cette requête à partir d'un client, vous pouvez vous connecter à partir de:
Vous êtes à la recherche pour une ligne qui a
test2
pour l'utilisateur, etlocalhost
pour l'hôte.Si cette ligne n'existe pas, alors l'hôte peut être réglé à la valeur générique de
%
pour correspondre à tous les autres hôtes qui n'est pas un match.Si la ligne existe, alors le mot de passe peut ne pas correspondre. Vous pouvez modifier le mot de passe (si vous êtes connecté en tant qu'utilisateur avec des privilèges suffisants, par exemple
root
Également de vérifier que l'utilisateur a des privilèges sur les objets dans la base de données.
Vérifier Les Choses Suivantes
Si vous utilisez MAMP, vous pourriez avoir à régler le support:
unix_socket: /Applications/MAMP/tmp/mysql/mysql.chaussette
Je tiens à ajouter aux réponses postées sur ci-dessus qu'aucune des solutions proposées ici a fonctionné pour moi. Mon WAMP, c'est de travailler sur le port 3308 au lieu de 3306 qui est ce qu'il est installé par défaut.
J'ai découvert que lorsque l'on travaille dans un environnement local, si vous utilisez la commande mysqladmin dans votre ordinateur (pour les tests de l'environnement), et si vous travaillez avec un port autre que le port 3306, vous devez définir votre variable DB_SERVER avec la valeur localhost:NumberOfThePort, de sorte qu'il ressemble à la suivante:
define("DB_SERVER", "localhost:3308"). Vous pouvez obtenir cette valeur en cliquant-droit sur l'icône de WAMP dans la barre des tâches (sur les icônes masquées dans la section) et sélectionnez Outils. Vous allez voir la section: "le Port utilisé par MySQL: NumberOfThePort"
Cela permettra de réparer votre connexion à votre base de données.
C'était l'erreur que j'ai obtenu:
Erreur: SQLSTATE[HY1045] Access denied for user 'nom d'utilisateur'@'localhost' sur la ligne X.
J'espère que cela vous aide.
🙂