ホームページ  >  記事  >  ウェブフロントエンド  >  Sequlize を使用して MySQL に接続するノードについてエラー: ユーザー「xxx」@「localhost」_node.js のアクセスが拒否されました

Sequlize を使用して MySQL に接続するノードについてエラー: ユーザー「xxx」@「localhost」_node.js のアクセスが拒否されました

小云云
小云云オリジナル
2018-01-05 09:18:173422ブラウズ

この記事では、Sequlize を使用して Mysql に接続し、エラー「ユーザー 'xxx'@'localhost' のアクセスが拒否されました」を報告する関連情報を主に紹介します。この記事では、サンプル コードを通じて詳細に紹介しています。以下に小さな「一緒に学びましょう」を記載しますので、皆様のお役に立てれば幸いです。

前書き

私は最近仕事で問題に遭遇しました。問題は次のとおりです:

Unhandled rejection SequelizeAccessDeniedError: Access denied for user 'lupeng'@'localhost' (using password: YES)

これは、Sequlize を使用して MySQL データに接続するときに Node によって報告されるエラーです。重要なのは、コロンの後のエラーです: アクセスが拒否されました。キーはアクセス拒否エラーです。 説明 データベース接続に問題があります。対応する操作権限がないか、アカウントのパスワードが間違っています。

これにより、アクセス許可と間違ったアカウントとパスワードという 2 つの点で問題が特定されます。それは時間の無駄になるだけなので、他の側面の問題を探すことを忘れないでください。

1. ユーザー権限の問題

権限の問題は、ユーザーの承認を確認した後、権限リストを更新するかどうかから始まります。つまり、Grant コマンドを使用してユーザーを承認した後は、flushprivilege コマンドを使用する必要があります。これは、多くの人が無視している問題です。

ユーザー認証に問題がない場合は、mysqlサーバーを再起動してみてください。 /etc/init.d/mysql restart コマンドを使用して、mysql サーバーを再起動します。再起動コマンドは、ここでは Debain システムを使用している Linux バージョンによって異なる場合があります。

再起動しても問題が解決しない場合は、データベースのユーザー権限に問題がない可能性があります。

2. アカウントのパスワードの問題

アカウントのパスワードが間違っているこの問題はばかげているように思えますが、開発プロセス中は多くの人が無視します。なぜそんなことを言うのですか?複数のシステム環境で開発を切り替えるため、config-lite モジュールを使用してデータベース パラメータを設定します。config-lite モジュールを使用すると、簡単な環境変数設定を通じてさまざまなパラメータ ファイルを読み込むことができます。具体的な使用法については、「さまざまな環境での構成ファイルの使用法」を参照してください。

ここで問題が発生します。ターミナルを開き、プロジェクト npm run test を実行します。テスト実行スクリプト NODE_ENV=testvisor --harmony -i views/ ./bin/www が package.json ファイルで構成されています。別のターミナルを開き、データベース同期コマンドを実行します。 同期コマンドは、js スクリプト内に別途記述されています。 接続方法は次のとおりです。

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;

したがって、データベースを同期するときは、常にタイトルでエラーが報告されましたが、それが正しいと思いました。最終チェックの後、問題を発見しました。テスト スクリプトの NODE_ENV 環境変数は、別のターミナルを開いて同期する場合にのみ有効です。データベースを削除するには、別のターミナルを再度開く必要があります。そうしないと、ロードされたデータベース パラメータに一貫性がなくなり、データベースへの接続に使用されるユーザー名とパスワードが正しくなくなります。

関連する推奨事項:

致命的なエラーの解決策: 未定義関数 mysql_connect() の呼び出し

PHP が Mac で MySQL に接続するときにエラー「そのようなファイルまたはディレクトリはありません」の解決策

php が mysql に接続するそして、「そのようなファイルまたはディレクトリはありません」というエラーが報告されます

以上がSequlize を使用して MySQL に接続するノードについてエラー: ユーザー「xxx」@「localhost」_node.js のアクセスが拒否されましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。