이 빠른 시작에서는 Node.js 사용하여 Azure Database for MySQL 유연한 서버에 연결합니다. 그런 다음, SQL 문을 사용하여 Mac, Linux 및 Windows 플랫폼에서 데이터베이스의 데이터를 쿼리, 삽입, 업데이트 및 삭제합니다.
이 문서에서는 Node.js 사용하여 개발하는 데 익숙하지만 Azure Database for MySQL 유연한 서버를 사용하는 것이 익숙하다고 가정합니다.
필수 조건
이 빠른 시작에서는 다음과 같은 가이드 중 하나에서 만들어진 리소스를 시작 지점으로 사용합니다.
- 빠른 시작: Azure Portal을 사용하여 Azure Database for MySQL 인스턴스 만들기
- 빠른 시작: Azure CLI를 사용하여 Azure Database for MySQL - 유연한 서버의 인스턴스 만들기
Node.js 및 MySQL 커넥터 설치
사용하는 플랫폼에 따라 적절한 섹션의 지침을 수행하여 Node.js를 설치합니다. npm을 사용하여 mysql2 패키지 및 해당 종속성을 프로젝트 폴더에 설치합니다.
Node.js 다운로드 페이지를 방문하여 원하는 Windows 설치 관리자 옵션을 선택합니다.
로컬 프로젝트 폴더를 만듭니다(예:
nodejsmysql).명령 프롬프트를 연 다음, 디렉터리를 프로젝트 폴더로 변경합니다(예:
cd c:\nodejsmysql\).NPM 도구를 실행하여
mysql2라이브러리를 프로젝트 폴더에 설치합니다.cd c:\nodejsmysql\ "C:\Program Files\nodejs\npm" install mysql2 "C:\Program Files\nodejs\npm" listnpm list출력 텍스트를 확인하여 설치를 확인합니다. 새 패치가 릴리스되면 버전 번호가 달라질 수 있습니다.
연결 정보 가져오기
Azure Database for MySQL 유연한 서버 인스턴스에 연결하는 데 필요한 연결 정보를 가져옵니다. 정규화된 서버 이름 및 로그인 자격 증명이 필요합니다.
- Azure Portal에 로그인합니다.
- Azure Portal의 왼쪽 메뉴에서 모든 리소스를 선택한 다음, 만든 서버(예: mydemoserver)를 검색합니다.
- 서버 이름을 선택합니다.
- 서버의 개요 패널에 있는 서버 이름과 서버 관리자 로그인 이름을 기록해 둡니다. 암호를 잊어버리면 이 패널에서 암호를 재설정할 수 있습니다.
코드 샘플 실행
- JavaScript 코드를 새 텍스트 파일에 붙여넣고 .js 파일 확장명이 포함된 프로젝트 폴더(C:\nodejsmysql\createtable.js 또는 /home/username/nodejsmysql/createtable.js)에 저장합니다.
- 코드의
host,user,password및database구성 옵션을 MySQL 유연 서버 및 데이터베이스를 만들 때 지정한 값으로 대체합니다. - TLS 인증서 가져오기: 클라이언트 애플리케이션과 암호화된 연결을 사용하려면 Azure Database for MySQL의 TLS(전송 계층 보안)의 지침을 따라야 합니다.
인증서 파일을 원하는 위치에 저장합니다.
-
ssl구성 옵션에서ca-cert파일 이름을 이 로컬 파일의 경로로 바꿉니다. 이렇게 하면 애플리케이션에서 SSL을 통해 데이터베이스에 안전하게 연결할 수 있습니다. - 명령 프롬프트 또는 Bash 셸을 연 다음, 디렉터리를 프로젝트 폴더로 변경합니다(예:
cd nodejsmysql). - 애플리케이션을 실행하려면 node 명령 다음에 파일 이름을 입력합니다(예:
node createtable.js). - Windows에서 노드 애플리케이션이 환경 변수 경로에 없는 경우 전체 경로를 사용하여 노드 애플리케이션을 시작해야 할 수 있습니다(예: ).
"C:\Program Files\nodejs\node.exe" createtable.js
테이블 연결, 생성 및 데이터 삽입
CREATE TABLE 및 INSERT INTO SQL 문을 사용하여 데이터를 연결하고 로드하려면 다음 코드를 사용하세요.
mysql.createConnection() 메서드는 Azure Database for MySQL 유연한 서버 인스턴스와 인터페이스하는 데 사용됩니다. connect() 함수는 서버에 대한 연결을 설정하는 데 사용됩니다. query() 함수는 MySQL 데이터베이스에 대해 SQL 쿼리를 실행하는 데 사용됩니다.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'your_server_name.mysql.database.azure.com',
user: 'your_admin_name',
password: 'your_admin_password',
database: 'quickstartdb',
port: 3306,
ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};
const conn = new mysql.createConnection(config);
conn.connect(
function (err) {
if (err) {
console.log("!!! Cannot connect !!! Error:");
throw err;
}
else
{
console.log("Connection established.");
queryDatabase();
}
});
function queryDatabase()
{
conn.query('DROP TABLE IF EXISTS inventory;',
function (err, results, fields) {
if (err) throw err;
console.log('Dropped inventory table if existed.');
}
)
conn.query('CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);',
function (err, results, fields) {
if (err) throw err;
console.log('Created inventory table.');
}
)
conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['banana', 150],
function (err, results, fields) {
if (err) throw err;
else console.log('Inserted ' + results.affectedRows + ' row(s).');
}
)
conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['orange', 250],
function (err, results, fields) {
if (err) throw err;
console.log('Inserted ' + results.affectedRows + ' row(s).');
}
)
conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['apple', 100],
function (err, results, fields) {
if (err) throw err;
console.log('Inserted ' + results.affectedRows + ' row(s).');
}
)
conn.end(function (err) {
if (err) throw err;
else console.log('Done.')
});
};
데이터 읽기
SELECT SQL 문을 사용하여 데이터를 연결하고 읽으려면 다음 코드를 사용하세요.
mysql.createConnection() 메서드는 Azure Database for MySQL 유연한 서버 인스턴스와 인터페이스하는 데 사용됩니다. connect() 메서드는 서버에 대한 연결을 설정하는 데 사용됩니다. query() 메서드는 MySQL 데이터베이스에 대해 SQL 쿼리를 실행하는 데 사용됩니다. 결과 배열은 쿼리 결과를 저장하는 데 사용됩니다.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'your_server_name.mysql.database.azure.com',
user: 'your_admin_name',
password: 'your_admin_password',
database: 'quickstartdb',
port: 3306,
ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};
const conn = new mysql.createConnection(config);
conn.connect(
function (err) {
if (err) {
console.log("!!! Cannot connect !!! Error:");
throw err;
}
else {
console.log("Connection established.");
readData();
}
});
function readData(){
conn.query('SELECT * FROM inventory',
function (err, results, fields) {
if (err) throw err;
else console.log('Selected ' + results.length + ' row(s).');
for (i = 0; i < results.length; i++) {
console.log('Row: ' + JSON.stringify(results[i]));
}
console.log('Done.');
})
conn.end(
function (err) {
if (err) throw err;
else console.log('Closing connection.')
});
};
데이터 업데이트
UPDATE SQL 문을 사용하여 데이터를 연결하고 업데이트하려면 다음 코드를 사용하세요.
mysql.createConnection() 메서드는 Azure Database for MySQL 유연한 서버 인스턴스와 인터페이스하는 데 사용됩니다. connect() 메서드는 서버에 대한 연결을 설정하는 데 사용됩니다. query() 메서드는 MySQL 데이터베이스에 대해 SQL 쿼리를 실행하는 데 사용됩니다.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'your_server_name.mysql.database.azure.com',
user: 'your_admin_name',
password: 'your_admin_password',
database: 'quickstartdb',
port: 3306,
ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};
const conn = new mysql.createConnection(config);
conn.connect(
function (err) {
if (err) {
console.log("!!! Cannot connect !!! Error:");
throw err;
}
else {
console.log("Connection established.");
updateData();
}
});
function updateData(){
conn.query('UPDATE inventory SET quantity = ? WHERE name = ?', [75, 'banana'],
function (err, results, fields) {
if (err) throw err;
else console.log('Updated ' + results.affectedRows + ' row(s).');
})
conn.end(
function (err) {
if (err) throw err;
else console.log('Done.')
});
};
데이터 삭제
DELETE SQL 문을 사용하여 데이터를 연결하고 삭제하려면 다음 코드를 사용하세요.
mysql.createConnection() 메서드는 Azure Database for MySQL 유연한 서버 인스턴스와 인터페이스하는 데 사용됩니다. connect() 메서드는 서버에 대한 연결을 설정하는 데 사용됩니다. query() 메서드는 MySQL 데이터베이스에 대해 SQL 쿼리를 실행하는 데 사용됩니다.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'your_server_name.mysql.database.azure.com',
user: 'your_admin_name',
password: 'your_admin_password',
database: 'quickstartdb',
port: 3306,
ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};
const conn = new mysql.createConnection(config);
conn.connect(
function (err) {
if (err) {
console.log("!!! Cannot connect !!! Error:");
throw err;
}
else {
console.log("Connection established.");
deleteData();
}
});
function deleteData(){
conn.query('DELETE FROM inventory WHERE name = ?', ['orange'],
function (err, results, fields) {
if (err) throw err;
else console.log('Deleted ' + results.affectedRows + ' row(s).');
})
conn.end(
function (err) {
if (err) throw err;
else console.log('Done.')
});
};
리소스 정리
이 빠른 시작에서 사용된 모든 리소스를 정리하려면 다음 명령을 사용하여 리소스 그룹을 삭제합니다.
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes