この記事では、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 サイトの他の関連記事を参照してください。