MENU
  • プロフィールprofile
  • サービスService
    • WordPress個人レッスン
    • 起業女性に寄りそうWEBお悩み相談
  • 実績・お客さまの声portfolio
  • ブログblog
  • お問合せcontact

    カテゴリー

    • ホームページ個別レッスン
    • Web・SNS集客
    • Web系プログラミング
    • WordPressプログラミング
    • フリーランスの小技
    • Web活用相談
    • はじめてのWordPress
    • アメブロカスタマイズ
    • ホームページ制作
    • 自分で作れるおしゃれデザイン
    • アイデア・思考の整理

    タグ

    Adobe IllustratorGatsby.jsgitGitHubHTML/CSSMySQLNode.jsPythonSourcetreeSWELLWordPressおすすめWPプラグインおすすめツールアメブロエックスサーバーサーチコンソールセキュリティバレットジャーナルライブドアブログ環境構築確定申告開発環境

    アーカイブ

    • 2025年3月
    • 2025年1月
    • 2024年12月
    • 2024年3月
    • 2023年7月
    • 2023年1月
    • 2022年12月
    • 2022年11月
    • 2022年8月
    • 2022年4月
    • 2022年3月
    • 2022年2月
    • 2022年1月
    • 2021年12月
    • 2021年11月
    • 2021年10月
    • 2021年9月
    • 2021年8月
    • 2020年10月
    • 2020年8月
    • 2020年7月
    • 2020年6月
    • 2020年5月
    • 2020年4月
    • 2020年3月
    • 2020年1月
    • 2019年11月
    • 2019年9月
    • 2019年8月
    • 2019年5月
    • 2019年2月
    • 2019年1月
    • 2018年11月
    • 2018年9月
    • 2018年8月
    • 2018年7月
    • 2018年6月
    • 2017年10月
    • 2017年9月
    • 2017年7月
    個人事業主・女性起業家のためのWordPress・HP・ブログレッスン
    自分で作れる優しいホームページレッスン
    • プロフィールprofile
    • サービスService
      • WordPress個人レッスン
      • 起業女性に寄りそうWEBお悩み相談
    • 実績・お客さまの声portfolio
    • ブログblog
    • お問合せcontact
    自分で作れる優しいホームページレッスン
    • プロフィールprofile
    • サービスService
      • WordPress個人レッスン
      • 起業女性に寄りそうWEBお悩み相談
    • 実績・お客さまの声portfolio
    • ブログblog
    • お問合せcontact
    1. ホーム
    2. Web制作スキルアップ
    3. Web系プログラミング
    4. Node.js+ExpressでMySQLに接続して一覧表示する

    Node.js+ExpressでMySQLに接続して一覧表示する

    2022 12/19
    Web系プログラミング
    2020-04-252022-12-19


    Node.jsとMySQLを接続して、データベースを動かす方法を説明します。

    この記事でわかること
    • MacでのMySQLの導入方法
    • Node.js(Express)からMySQLデータベースに接続するプログラム
    • データベースから情報を取得して、表示するプログラム
    前提
    • Macでの操作になります
    • Node.jsはインストール済み
    目次

    Node.js用のプロジェクトを作成する

    PC上に新しいフォルダを作成し、フォルダの中で、下記コマンドを順に実行します。

    npm init

    設定はデフォルトのままで、entry point : (index.js)のところは、「app.js」としました。
    app.jsは初期ファイル名です

    Expressのインストール

    npm install express --save

    EJSのインストール
    ejsを導入することで、HTMLにJavaScriptを埋め込めるようになります。

    npm install ejs

    MySQLのインストール

    npm install mySQL

    MySQLデーターベースの作成

    (MySQLをインストールしていない場合)MySQLをインストールします。

    brew install mysql

    MySQLサーバーを立ち上げます。

    -- MySQLサーバースタート
    mysql.server start

    コンソールがmysql>となり、MySQLを操作できるようになります。

    MySQLへログインします。

    -- MySQLへログイン
    mysql -uroot -p

    ポート番号を確認します。

    -- ポート番号の確認
    show variables like 'port';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | port          | 3306  |
    +---------------+-------+

    ここで出てきた、3306はあとでプログラムを書く時に、ポート番号として使います。

    まずはプログラムで使う、データベースとテーブルを作成します。
    テスト用のデータベース作成します。

    -- データベースtest作成
    create database test;

    testにテーブルitemsを作成します。

    -- テーブル作成
    use test;
    CREATE TABLE items(
         id INT(11) AUTO_INCREMENT NOT NULL,
         name VARCHAR(30) NOT NULL ,
         PRIMARY KEY (id));

    作成したテーブル情報を確認します。

    DESC items;
    +-------+-------------+------+-----+---------+----------------+
    | Field | Type        | Null | Key | Default | Extra          |
    +-------+-------------+------+-----+---------+----------------+
    | id    | int         | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(30) | NO   |     | NULL    |                |
    +-------+-------------+------+-----+---------+----------------+

    テーブルにデータを投入します。

    これで、こんなテーブル(items)ができています。

    -- データ投入
    INSERT items(name) VALUES ('じゃがいも');
    INSERT items(name) VALUES ('にんじん');
    INSERT items(name) VALUES ('たまねぎ');

    ユーザーを作り、ユーザー権限を付与します。

    -- ユーザー作成、権限付与
    create user 'root'@'localhost' identified with mysql_native_password by 'password';
    GRANT ALL ON test.* TO 'root'@'localhost';

    root →ユーザー名
    password →パスワード
    test → データベース名
    をいれてください。

    MySQL8.0の場合、Node.jsのmysqlが新しいパスワードの認証形式に対応していないため、ユーザーの設定ができていないと実行エラーがでてしまいます。

    Node.jsでMySQLへ接続するプログラム

    const express = require('express');
    const mysql = require('mysql');
    const app = express();
    
    app.use(express.static('public'));
    
    // データベース接続情報
    const connection = mysql.createConnection({
      host: 'localhost',
      port: 3306,
      user: 'root',
      password: 'password',
      database: 'test'
    });
    
    // データベースに接続できたらコンソールにConnectedを表示
    connection.connect(function(err) {
      if (err) throw err;
      console.log('Connected');
    });
    
    app.listen(3000);

    データベース接続情報は各自の環境に変更ください

    • port:先ほどMySQLで確認したポート番号3306を設定
    • userアカウント名
    • password:パスワード
    • database:データベース名

    MySQLに接続できているか、プログラムを実行して確認

    ターミナルでプログラムを実行します。

    うまくいっているとターミナル上に「Connected」と表示されています。

    $node app.js

    確認できたら、Ctrl + cで終了。

    データベースの情報を取得して表示するNode.jsプログラム

    続いて、テーブルからデータをSELECTして画面に表示するプログラム

    projectフォルダ構造はこのようになっています。

    const express = require('express');
    const mysql = require('mysql');
    const app = express();
    
    // データベース接続情報
    const connection = mysql.createConnection({
      host: 'localhost',
      port: 3306,
      user: 'root',
      password: 'root',
      database: 'list_app'
    });
    
    // テーブルitemsのデータを取得してindex.ejsで表示
    app.get('/', (req, res) => {
      connection.query(
        'SELECT * FROM items',
        (error, results) => {
          res.render('index.ejs',{items:results});
        }
      );
    });
    
    app.listen(3000);
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>SAMPLE</title>
      </head>
      <body>
          <ul>
            <% items.forEach((item) => { %>
              <li>
                <div>
                  <span><%= item.id %></span>
                  <span><%= item.name %></span>
                </div>
              </li>
            <% }) %>
          </ul>
      </body>
    </html>

    Node.jsプログラムの実行結果

    ターミナルでプログラムを実行します。

    $node app.js

    localhost:3000にアクセスするとデータベースの内容がリストで表示されています。(いろいろ操作してたら、とまととだいこんの行が増えてました😅)

    最後に、MySQLを終了するときは「exit」で。

     exit
    Web系プログラミング
    MySQL Node.js
    よかったらシェアしてね!
    中谷恵美
    あなたのお仕事を育てるホームページの先生
    システムエンジニア、ITコンサルタントを経て、フリーランスに。

    ・ホームページ作成
    ・ブログのカスタマイズ
    ・LINEやメルマガのセットアップ
    ・Canvaを使ったデザインの作り方
    ・Googleの分析ツール
    ・自分の強みを生かした集客
    などの、個人レッスンをしています。

    「仕事の発信に使えるようになりたい」
    「自分でも使えるスキルを身につけたい」
    ITが苦手な個人事業主さんに向けて、困ったときのWEB担当として幅広くサポートしています。

    HP作成のほかにも、心理カウンセラーとしても活動中。

    趣味は、文房具集め、ゲーム(牧場系とモンハン)、手芸(刺繍、洋裁)。
    運動が苦手で体が硬いのが悩み。今年、腰痛改善にジムに通い始めたが、果たして続くのか。。。
    詳しいプロフィールを見る
    活動実績

    【HP個人レッスン】

    ●ハワイアン伝統ロミロミサロン・Aさま
    ・2ヶ月でサロンのHPをリニューアル。新サービス立上げ時も自分でHPを作成できるように。
    「最初はパソコン音痴の私にできるか不安でしたが、とても丁寧な指導でわかりやすかったです。
    私好みの素敵なHPができあがり、とっても嬉しいです!」

    ●Mさま
    ・2回のミーティングでWordPress運営スキルを習得。オウンメディアを立上げ。

    ●Sさま
    ・5日間で無料ブログからWordPressへのお引越し。
    「半ば諦めかけていた移管を短期間で終えることが出来ました」

    【ホームページ作成】

    ●これまでご依頼いただいたお客さま
    (個人)写真家・美容サロン・弁護士・デザイナー・心理カウンセラー・占い師

    (法人)メーカー代理販売店、コンサルティング企業、人事支援企業

    【経歴・資格など】
    ・基本情報技術者
    ・簿記2級

    【営業時間】平日:10:00~19:00
    【休業日】土、日、祝、年末年始

    新着記事
    • 【お客様の声】ゴールが明確になり、とても安心できました
      2025-03-13
      Web・SNS集客
    • 【お客様の声】WordPressには自由度の高さを感じます
      2025-01-21
      ホームページ個別レッスン
    • WordPressに記事を一括アップロードするには
      2024-12-05
      はじめてのWordPress
    • 【お客様の声】等身大のちょっと先を提案してもらえた
      2024-03-08
      ホームページ個別レッスン
    • 【お客様の声】寄り添ってもらえたっていうのが一番心強かった
      2023-07-21
      ホームページ個別レッスン
    人気記事
    • 【CSSコピペOK】おしゃれな引用blockquoteデザイン10選
      2018-09-13
      WordPressプログラミング
    • 【Mac】SourcetreeからGitHubへSSH接続する
      2021-08-05
      Web系プログラミング
    • 【CSS】シンプルで女性らしい囲み枠デザイン48選
      2018-08-24
      アメブロカスタマイズ
    • 自分でできる。アメブロのおしゃれなカスタマイズまとめ
      2022-11-04
      アメブロカスタマイズ
    • Node.js+ExpressでMySQLに接続して一覧表示する
      2020-04-25
      Web系プログラミング
    目次