何らかの理由で、サーバーへの単純な接続を確立できません。デフォルト設定を使用して、最新の MySQL Community 8.0 データベースを Node.JS とともにインストールしました。
これは私のnode.jsコードです
リーリーコマンド プロンプトで見つかったエラーは次のとおりです:
リーリー次のようなものを読みました。 https://dev.mysql.com/doc/refman/5.5/en/old-client.html https://github.com/mysqljs/mysql/issues/1507
しかし、問題を解決する方法がまだわかりません。
P粉1619397522023-10-11 09:08:13
###まとめ###
これを修正したいが理由がわからない場合は、
mysql2 の代わりに) をインストールして使用してください -
npm mysql2および
mysql = require('mysql2');。
あなたが好奇心旺盛で常に学びたがっている開発者であれば、読み続けてください... :)
(
source) の代わりに、caching_sha2_password
という名前のパスワードの 1 つが使用されます。どうやら、複数のハンドシェイクを使用する暗号化アルゴリズムは、##24 で使用される単純なパスワードの受け渡しよりも安全であるようです。年###!
ここで、問題は、Node の mysqljs (npm i mysql を使用してインストールし、Node コードで使用するパッケージ) が、MySQL 8 のこの新しいデフォルト認証をサポートしていないことです。メソッドはまだ利用できません。この問題はここにあります:
2019 年 7 月現在、3 年経った今でもオープンしています。
2019 年 6 月更新:
これを修正するための新しい PR が mysqljs a> にあります。
2020 年 2 月更新: どうやら、mysqljs バージョン 3 で提供される予定のようです。 a>
2020 年 7 月の更新: どうやらまだ (少なくとも 2020 年 4 月の時点では) にはないようですが、 は
node-mysql2 と主張しています。 認証切り替えリクエストをサポートします。 node-mysql2< a href="https://github.com/sidorares/node-mysql2" rel="noreferrer"> がこの問題を適切に解決する場合は、以下にコメントを残してください。 - 後ほど自分でテストします。
2021 年 4 月の更新: 問題はまだ存在しているようですが、わずか 3 日前に 誰かがフォークを作成して実装しました - ただし、mysql.js パッケージ内ではまだ公式ではありません。また、以下のコメントによると、
mysql2 パッケージ は正常に動作し、
これは、ここにいる誰もが提案していることです (上記の ベストアンサー のように)。 mysql
にアクセスし、古い mysql_native_password
メソッドを使用して root
を認証できることを示すクエリを実行するだけです。
リーリー
何も質問することなく、Sequel Pro のような古き良きツールを引き続き使用できることです。しかし問題は、より安全なものを利用していないことです(そしてクールです、下記をお読みください)。 オプション 2) [まあ...] 「ノード」パッケージを MySQL Connecter X DevAPI に置き換えます
MySQLこれは、caching_sha2_password 認証をサポートする魅力のように機能します。 (#XX プロトコル通信 には必ずポート 33060 を使用してください。)
悪いのは、私たち全員が慣れ親しんで依存していた古い mysql
パッケージからあなたが離れてしまったことです。
利点は、アプリケーションの安全性が向上し、私たちの古き良き友人が提供していない大量の新機能を利用できることです。 XX DevAPI チュートリアル をチェックしてみると、便利な新しいセクシーな機能がたくさんあることがわかります。テクノロジーのアップグレードには必ず伴う学習曲線の代償を支払う必要があるだけです。 :)
typescript を使用すると問題が発生します。 dts-gen と dtsmake を使用して .d.ts を生成しようとしましたが、成功しませんでした。したがって、このことを念頭に置いてください。
前述したように、mysql パッケージ (NPM パッケージのリンク
) には まだこの問題が存在します (2021 年 4 月の時点)。しかし、mysql2 パッケージ (NPM パッケージのリンクmysql2 は人気のある mysql のフォークですが、その人気 (mysql2 は 2020 年 4 月時点で週あたり 620,000 ダウンロードでした) であることに注意してください。元のパッケージ (2021 年 4 月の週あたり 72 万ダウンロード mysql
) に近いため、切り替えるのが合理的だと思われます。P粉1987499292023-10-11 00:55:10
MYSQL Workbench で次のクエリを実行します
ユーザー 'root'@'localhost' を mysql_native_password BY 'password' で識別されるように変更します;
ここで root
はユーザーです
localhost
を URL として使用します
password
をパスワードとして使用します
次に、次のクエリを実行して権限を更新します:
権限を更新;
これを実行した後、ノードを使用して接続してみます。
これが機能しない場合は、@'localhost'
部分を使用しないようにしてください。