Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen über Node ein, der Sequlize verwendet, um eine Verbindung zu MySQL herzustellen und einen Fehler zu melden: Zugriff verweigert für Benutzer 'xxx'@'localhost'. Der Artikel stellt es detailliert anhand von Beispielcode vor Es kann sich darauf beziehen. Lassen Sie den Herausgeber kommen und gemeinsam lernen. Ich hoffe, es kann allen helfen.
Vorwort
Ich bin kürzlich auf ein Problem bei der Arbeit gestoßen. Das Problem ist wie folgt:
Unhandled rejection SequelizeAccessDeniedError: Access denied for user 'lupeng'@'localhost' (using password: YES)
Dies ist ein von Node gemeldeter Fehler, wenn Sequlize zum Herstellen einer Verbindung zu MySQL verwendet wird Der Schlüssel besteht darin, nach dem Fehler „Zugriff verweigert“ zu suchen. Dies bedeutet, dass ein Problem mit der Datenbankverbindung vorliegt, da keine entsprechende Betriebsberechtigung vorliegt , oder das Kontopasswort ist falsch.
Dadurch wird das Problem an zwei Punkten lokalisiert: Zugriffsberechtigungen und falsches Konto und Passwort. Vergessen Sie nicht, nach Problemen in anderen Aspekten zu suchen, da dies nur Zeitverschwendung ist.
1. Benutzerberechtigungsprobleme
Berechtigungsprobleme beginnen mit der Datenbank, ob die Berechtigungsliste aktualisiert werden soll. Das heißt, nachdem Sie einen Benutzer mit dem Befehl „Grant“ autorisiert haben, sollten Sie den Befehl „Flush Privileges“ verwenden. Dies ist ein Problem, das viele Leute ignorieren.
Wenn es kein Problem mit der Benutzerautorisierung gibt, versuchen Sie, den MySQL-Server neu zu starten. Verwenden Sie den Befehl /etc/init.d/mysql restart, um den MySQL-Server neu zu starten. Der Neustartbefehl kann in verschiedenen Linux-Versionen unterschiedlich sein. Ich verwende hier das Debain-System.
Wenn das Problem nach dem Neustart nicht behoben wird, liegt möglicherweise kein Problem mit den Datenbankbenutzerberechtigungen vor.
2. Konto- und Passwortprobleme
Falsches Konto und falsches Passwort, aber während des Entwicklungsprozesses werden viele Leute es ignorieren. Warum sagst du das? Ich verwende das config-lite-Modul zum Konfigurieren von Datenbankparametern, da ich die Entwicklung in mehreren Systemumgebungen umschalte. Mit dem config-lite-Modul können durch einfache Umgebungsvariablenkonfiguration verschiedene Parameterdateien geladen werden. Informationen zur spezifischen Verwendung finden Sie unter: Verwendung der Konfigurationsdatei in verschiedenen Umgebungen.
Mein Problem tritt hier auf und führt das Projekt npm run test aus. Das Testlaufskript ist in der package.json-Datei NODE_ENV=test supervisor --harmony -i view/ ./bin/www konfiguriert . Öffnen Sie ein anderes Terminal und führen Sie den Synchronisierungsbefehl separat in einem JS-Skript aus. Die Datenverbindungsmethode lautet wie folgt:
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;
Bei der Synchronisierung wird bei der Verwendung der Datenbank immer derselbe Fehler wie im Titel gemeldet, aber ich denke, dass er korrekt ist. Nach einer abschließenden Überprüfung habe ich das Problem entdeckt: Die Umgebungsvariable NODE_ENV im Testskript ist nur unter dem aktuellen gültig Wenn Sie ein anderes Terminal öffnen möchten, um die Datenbank zu synchronisieren, müssen Sie die Umgebungsvariablen in einem separaten Terminal festlegen. Andernfalls sind die geladenen Datenbankparameter inkonsistent, was bedeutet, dass der Benutzername und das Passwort, die für die Verbindung zur Datenbank verwendet werden, falsch sind.
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonÜber Knoten, der Sequlize zum Verbinden mit MySQL verwendet, Fehler: Zugriff für Benutzer „xxx'@„localhost'_node.js verweigert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!