■ Front-End ■/Node.js

[Node.js] w3cschool의 MySQL 튜토리얼 실행할 때 유용한 팁

한길(One Way) 2023. 2. 26.
Node.js는 빠르고 쉬우며 확장 가능한 JavaScript 런타임이다.

 

1. 개요

w3schools 사이트에서 Sever Side 기술로 Node.js를 소개하고 있다. Node.js를 사용하여 MySQL 데이터베이스와 연계하는 튜토리얼이 잘 정리되어 있다. 한 페이지씩 보면서 w3schools 사이트에 있는 예제 코드를 실행하는 것으로도 충분한 학습이 가능하다.

https://www.w3schools.com/nodejs/nodejs_mysql.asp

2. 문제점

MySQL 데이터베이스가 설치되어 있으면 mysql 모듈을 설치하면 아래의 코드를 실행해 볼 수 있다. 다음의 코드를 보면 w3cschool 사이트에서 친절하게 user 계정과 비밀번호를 yourusername, yourpassword라고 되어 있다. 코드를 복사해서 해당 부분을 실행하려는 MySQL의 계정 정보를 입력하면 되는데 코드마다 매번 수정하는 것이 상당이 번거롭다.

 
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers", function (err, result, fields) {
    if (err) throw err;
    console.log(result);
  });
});

 

3. 해결 방법

MySQL 데이터베이스의 사용자 이름과 비밀번호가 다르기 때문에 튜토리얼 코드를 실행하기 전에 매번 변경을 해주어야 한다. 예제 코드에서 접속 계정과 관련한 코드를 변경하지 않고 바로 실행할 수 있도록 아래의 스크립트를 작성해 보았다. username과 password를 수정하는 게 번거로워 MySQL에 yourusername의 계정을 새롭게 만들었고 암호를 yourpassword로 설정했다. 튜토리얼 코드의 계정 정보와 똑같이 만들었다.

 
create user yourusername@localhost identified by 'yourpassword';
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
GRANT ALL ON *.* TO 'yourusername'@'localhost';
flush PRIVILEGES;

 

4. 코드 실행

이제는 연결과 관련된 정보를 변경하지 않고 코드 그대로 사용할 수 있다.

그럼 튜토리얼 코드를 몇 가지 순서대로 실행해 보자.

MySQL에 "mydb" 데이터베이스를 생성하는 코드이다.

> node demo_create_db.js

 
var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  con.query("CREATE DATABASE mydb", function (err, result) {
    if (err) throw err;
    console.log("Database created");
  });
});

실행 결과

Connected!
Database created

mydb 데이터베이스에 customers 테이블을 생성하는 코드이다.

> node demo_create_table.js

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("Table created");
  });
});

실행 결과

 
Connected!
Table created

customers 테이블에 여러 레코드를 추가하는 코드이다.

> node demo_db_insert.js

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "INSERT INTO customers (name, address) VALUES ?";
  var values = [
    ['John', 'Highway 71'],
    ['Peter', 'Lowstreet 4'],
    ['Amy', 'Apple st 652'],
    ['Hannah', 'Mountain 21'],
    ['Michael', 'Valley 345'],
    ['Sandy', 'Ocean blvd 2'],
    ['Betty', 'Green Grass 1'],
    ['Richard', 'Sky st 331'],
    ['Susan', 'One way 98'],
    ['Vicky', 'Yellow Garden 2'],
    ['Ben', 'Park Lane 38'],
    ['William', 'Central st 954'],
    ['Chuck', 'Main Road 989'],
    ['Viola', 'Sideway 1633']
  ];
  con.query(sql, [values], function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
  });
});
 

실행 결과

Connected!
Number of records inserted: 14

5. 참조 URL

728x90

댓글