MySQL Workbench를 실행한 후, 상단 메뉴에서 Database > Connect to Database를 선택한다.
연결 설정
- Connection Method
: Standard (TCP/IP)
- Hostname
: 127.0.0.1 또는 localhost
- Port
: MySQL 서버가 사용 중인 포트 (기본값은 3306)
- Username
: 데이터베이스 사용자 이름, 예: root
- Password
: 연결을 위한 비밀번호 (설정된 경우)
Create Table 옵션을 사용하여 새 테이블을 정의한다다. 테이블의 이름과 필요한 컬럼을 추가한다.
Node.js 애플리케이션에서 MySQL 데이터베이스를 사용하려면 적절한 npm 패키지를 설치해야 한다. 여러 패키지들 중 npm: mysql2 패키지가 성능이 개선되어 사용이 권장된다.
패키지 설치
npm install --save mysql2
데이터베이스 연결 및 쿼리 실행 예제
// Get the client
const mysql = require('mysql2');
// Create the connection to database
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'test',
password: 'password'
});
// A simple SELECT query
connection.query(
'SELECT * FROM `table` WHERE `name` = "Page" AND `age` > 45',
function (err, results, fields) {
console.log(results); // results contains rows returned by server
console.log(fields); // fields contains extra meta data about results, if available
}
);
host, user, database, password 부분은 자신의 환경에 맞게 설정해주어야 한다.
코드 작성해서 실행해도 undefined 상태라 이유를 찾다가..
내 databse 이름이 대문자로 시작하는데, 소문자로 시작해서 그런 거였다. 이름은 대소문자 구분을 해야하나보다. 수정을 하고나니 제대로 results를 불러온다.
데이터베이스의 시간 설정을 Asia/Seoul로 변경하려면 다음 SQL 명령을 사용하면 된다.
세션별 시간대 설정
SET time_zone='Asia/Seoul';
글로벌 시간대 설정 (권장하지 않음)
SET GLOBAL time_zone='Asia/Seoul';
글로벌 설정은 시스템 시간대 설정에 영향을 줄 수 있으므로 주의해서 사용해야 한다.
GLOBAL 설정을 빼줬더니 시간대가 제대로 적용이 된 것을 확인할 수 있다.
Node.js에서 MySQL 서버의 시간대와 일치하는 시간 정보를 얻으려면, 데이터베이스 연결 설정 시 dateStrings 옵션을 true로 설정해야 한다.
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'test',
password: 'password',
dateStrings: true
});
이 설정을 통해 서버로부터 반환된 날짜 및 시간 값이 문자열 형태로 처리되어, 로컬 시간대에 영향을 받지 않는다.
워크벤치를 정말 오랜만에 사용하는데 옛날 기억이 새록새록 떠올랐다. 그 때는 시간에 쫓겨 DB 연동할 때 완벽히 이해하지 못하고 구현하기 급급했는데, 이제 연동 방법도 제대로 파악하여 잘 사용할 수 있을 듯하다.