質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

Node.jsにてDB出力ができない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 110

yuki30

score 0

前提・実現したいこと

Progateにてプログラミングを勉強中なのですが
Node.jsとMySQLを接続をしたいのですがうまくいきません

MySQLにてDBとテーブルを作成、コマンドにてテーブルの確認済み
接続ができるかテストの為、サイトアクセス時にDB内容を出力

発生している問題・エラーメッセージ

ローカルサーバーのテストページは表示されますが
データベースのテーブルデータがアクセス時の出力がされません

エラーメッセージ

C:\Users\User\test>node app.js
error connecting: Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
at Handshake.Sequence._packetToError (C:\Users\User\test\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
at Handshake.ErrorPacket (C:\Users\User\test\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18)
at Protocol._parsePacket (C:\Users\User\test\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (C:\Users\User\test\node_modules\mysql\lib\protocol\Parser.js:433:10)
at Parser.write (C:\Users\User\test\node_modules\mysql\lib\protocol\Parser.js:43:10)
at Protocol.write (C:\Users\User\test\node_modules\mysql\lib\protocol\Protocol.js:38:16)
at Socket.<anonymous> (C:\Users\User\test\node_modules\mysql\lib\Connection.js:88:28)
at Socket.<anonymous> (C:\Users\User\test\node_modules\mysql\lib\Connection.js:526:10)
at Socket.emit (events.js:315:20)

at addChunk (_stream_readable.js:295:12)

at Protocol._enqueue (C:\Users\User\test\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Protocol.handshake (C:\Users\User\test\node_modules\mysql\lib\protocol\Protocol.js:51:23)
at Connection.connect (C:\Users\User\test\node_modules\mysql\lib\Connection.js:116:18)
at Object.<anonymous> (C:\Users\User\test\app.js:13:12)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47

app.js内コード

const mysql = require('mysql2');

const app = express();

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '****',
  database: 'list_app'
});

connection.connect((err) => {
  if (err) {
    console.log('error connecting: ' + err.stack);
    return;
  }
  console.log('success');
});

app.get('/', (req, res) => {
  connection.query(
    'SELECT * FROM users',
    (error, results) => {
      console.log(results);
      res.render('index.ejs');
    }
  );
});

app.listen(3001);


使用データベースとテーブル

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| list_app           |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| world              |
+--------------------+
mysql> show tables;
+--------------------+
| Tables_in_list_app |
+--------------------+
| items              |
| users              |
+--------------------+

補足情報(FW/ツールのバージョンなど)

各種バージョン

>mysql --version
mysql  Ver 8.0.21 for Win64 on x86_64 (MySQL Community Server - GPL)

>node -v
v12.18.3

>npm -v
6.14.8

パッケージは下記インストール済みは確認
express mysql ejs
MySQLのサービスは開始状態

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yuki30

    2020/09/16 21:58

    アンインストールをしました。方法はPC上のコントロールパネルから関連していたものを全てです。
    一応、PC再起動をした後8.0.21をインストールしました。

    キャンセル

  • technocore

    2020/09/16 22:55

    5系をアンインストールする時は、完全に削除してみてください。
    mysql5本体のディレクトリ、DBのディレクトリ、mysqlの設定ファイルなど全てです。

    ちなみに私のWindows環境で、あなたのapp.jsは動きますよ。
    (rootのパスワード、データベース名やテーブル名は違いますが)

    D:> node -v
    v12.16.2

    D:> mysql -v
    mysql Ver 8.0.20 for Win64 on x86_64 (MySQL Community Server - GPL)

    package.jsonのnpm一覧
    "ejs": "^3.1.5",
    "express": "^4.17.1",
    "mysql2": "^2.1.0"

    キャンセル

  • yuki30

    2020/09/17 01:02 編集

    mysql2をインストールしてみました。
    結果、認証エラーは出なくなりました!!

    データベースの出力も問題なしです
    ただしかし、const mysql = require('mysql2'); の引数をmysqlにすると認証エラーはでますね…
    長いですが以下エラー内容がやっと出ました。
    長くなるので質問内容の整理と共にエラーメッセージもそちらに記載しました。
    ごちゃごちゃにしてしまい申し訳ないです。

    キャンセル

回答 2

check解決した方法

0

認証方法がどうしてもうまくいかず提案があったmysql2をインストール
以下のようにコードを書き換え

const mysql = require('mysql2');


これで接続が問題なくできました。
様々なご提案とご教授ありがとうございます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

nodejsがmysql ver8の認証方式に対応していないようです
https://stackoverflow.com/questions/50373427/node-js-cant-authenticate-to-mysql-8-0

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/09/16 19:32

    私のNodejsはMySQL8と連携していますが。

    キャンセル

  • 2020/09/17 01:07

    回答のURLは https://teratail.com/help/question-tips#questionTips3-7 の [リンク] で [リンク先の説明](http...) に修正してください。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る