Cet article vous présente principalement les informations pertinentes sur Node utilisant Sequlize pour se connecter à Mysql et signaler une erreur : Accès refusé pour l'utilisateur 'xxx'@'localhost'. L'article le présente en détail à travers un exemple de code. il peut s'y référer. Ce qui suit est Laissez l'éditeur venir étudier ensemble, j'espère que cela pourra aider tout le monde.
Avant-propos
J'ai récemment rencontré un problème au travail. Le problème est le suivant :
Unhandled rejection SequelizeAccessDeniedError: Access denied for user 'lupeng'@'localhost' (using password: YES)
Il s'agit d'une erreur signalée par Node lors de l'utilisation de Sequlize pour se connecter à Mysql. data. La clé est de s'occuper des deux points. Erreur : accès refusé. La clé est l'erreur d'accès refusé, ce qui signifie qu'il y a un problème avec la connexion à la base de données. L'accès à la connexion à la base de données est refusé, soit parce qu'il n'y a pas d'autorisation d'opération correspondante. , ou le mot de passe du compte est erroné.
Cela localise le problème sur deux points : les autorisations d'accès et le compte et le mot de passe incorrects. N'oubliez pas de rechercher des problèmes sous d'autres aspects, car cela ne sera qu'une perte de temps.
1. Problèmes d'autorisation de l'utilisateur
Les problèmes d'autorisation commencent par la base de données après avoir confirmé l'autorisation de l'utilisateur, s'il faut actualiser la liste des autorisations. C'est-à-dire qu'après avoir utilisé la commande Grant pour autoriser un utilisateur, vous devez utiliser la commande flush privilèges. C'est un problème que beaucoup de gens ignorent.
S'il n'y a pas de problème avec l'autorisation de l'utilisateur, essayez de redémarrer le serveur mysql. Utilisez la commande /etc/init.d/mysql restart pour redémarrer le serveur mysql. La commande de redémarrage peut être différente selon les versions de Linux. Il s'agit du système Debain.
Si le problème n'est pas résolu après le redémarrage, il se peut qu'il ne s'agisse pas d'un problème avec les autorisations des utilisateurs de la base de données.
2. Problèmes de compte et de mot de passe
Compte et mot de passe incorrects Ce problème semble ridicule, mais pendant le processus de développement, de nombreuses personnes l'ignoreront. Pourquoi tu dis ça ? J'utilise le module config-lite pour configurer les paramètres de la base de données, car je change de développement dans plusieurs environnements système. L'utilisation du module config-lite peut charger différents fichiers de paramètres via une simple configuration de variables d'environnement. Pour une utilisation spécifique, veuillez vous référer à : Utilisation du fichier de configuration dans différents environnements.
Mon problème se pose ici. Ouvrez un terminal et exécutez le projet npm run test Le fichier package.json est configuré avec le script d'exécution de test NODE_ENV=test superviseur --harmony -i views/ ./bin/www. . Ouvrez un autre terminal et exécutez la commande de synchronisation de la base de données. La commande de synchronisation est écrite séparément dans un script js. La méthode de connexion des données (générale) est citée dans le script :
var Sequelize = require('sequelize'); // 引入数据库配置文件 var sqlConfig = require('config-lite')(__dirname).mysql; var sequelize = new Sequelize(sqlConfig.database, sqlConfig.user, sqlConfig.password, { host: sqlConfig.host, dialect: 'mysql', pool: { max: 10, min: 0, idle: 10000 } }); module.exports = sequelize;
. Donc en synchronisation Lors de l'utilisation de la base de données, elle rapporte toujours la même erreur que le titre, mais je pense que c'est correct. Après une dernière vérification, j'ai découvert le problème : la variable d'environnement NODE_ENV dans le script de test n'est valable que sous le terminal actuel. . Si vous souhaitez ouvrir un autre terminal pour synchroniser la base de données, vous devez définir les variables d'environnement dans un terminal séparé. Sinon, les paramètres de la base de données chargée seront incohérents, ce qui signifie que le nom d'utilisateur et le mot de passe utilisés pour se connecter à la base de données sont incorrects.
Recommandations associées :
L'erreur Aucun fichier ou répertoire de ce type lorsque PHP se connecte à MySQL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!