Краткое руководство. Использование Node.js для подключения и запроса данных в База данных Azure для MySQL
Внимание
Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Пожалуйста, рассмотрите возможность использования и планирования соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер
Внимание
База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"
Из этого краткого руководства вы узнаете, как подключиться к Базе данных Azure для MySQL с использованием Node.js. Затем вы используете инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных с платформ Mac, Linux и Windows.
В этой статье предполагается, что вы знакомы с разработкой с помощью Node.js, но вы не знакомы с База данных Azure для MySQL.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Сервер Базы данных Azure для MySQL. Создайте сервер Базы данных Azure для MySQL с помощью портала Azure или Azure CLI.
Внимание
Убедитесь, что IP-адрес, с которого вы подключаетесь, добавлен в правила брандмауэра на сервере через портал Azure или Azure CLI.
Установка 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" list
Проверьте установку, просмотрев текст вывода
npm list
. Номера версии могут отличаться, когда будут выпущены новые обновления.
Получение сведений о подключении
Получите сведения о подключении, необходимые для подключения к базе данных Azure.для MySQL. Вам потребуется полное имя сервера и учетные данные для входа.
- Войдите на портал Azure.
- В меню слева на портале Azure выберите Все ресурсы и выполните поиск по имени созданного сервера (например, mydemoserver).
- Выберите имя сервера.
- Запишите имя сервера и имя для входа администратора сервера с панели сервера Обзор. Если вы забыли свой пароль, можно также сбросить пароль с помощью этой панели.
Выполнение примеров кода
Вставьте код JavaScript в текстовые файлы и сохраните их в папку проекта с расширением файла .js, например C:\nodejsmysql\createtable.js or /home/username/nodejsmysql/createtable.js).
Замените параметры конфигурации
host
,user
,password
иdatabase
значениями, указанными при создании сервера и базы данных.Получить SSL-сертификат: скачайте сертификат, который необходим для взаимодействия с сервером базы данных Azure для MySQL по протоколу SSL из https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem, и сохраните файл сертификата на локальном диске.
Для Microsoft Internet Обозреватель и Microsoft Edge: после завершения скачивания переименуйте сертификат в DigiCertGlobalRootCA.crt.pem.
Ознакомьтесь со следующими ссылками для сертификатов для серверов в национальных облаках: Azure для государственных организаций, Microsoft Azure, управляемых 21Vianet и Azure Для Германии.
В параметре конфигурации
ssl
замените имя файлаca-cert
на путь к этому локальному файлу.Откройте командную строку или оболочку Bash и перейдите в папку проекта
cd nodejsmysql
.Чтобы запустить приложение, введите команду Node, указав после нее имя файла, например
node createtable.js
.В Windows, если приложение узла не в пути переменной среды, может потребоваться использовать полный путь для запуска приложения узла, например
"C:\Program Files\nodejs\node.exe" createtable.js
Подключение, создание таблицы и вставка данных
Используйте приведенный ниже код для подключения и загрузки данных с помощью инструкций SQL CREATE TABLE и INSERT INTO.
Метод mysql.createConnection() используется для обмена данными с сервером MySQL. Функция connect() используется для подключения к серверу. Функция query() используется для выполнения SQL-запроса к базе данных MySQL.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'mydemoserver.mysql.database.azure.com',
user: 'myadmin@mydemoserver',
password: 'your_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', 154],
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.')
});
};
Чтение данных
Используйте указанный ниже код с инструкцией SQL SELECT для подключения и чтения данных.
Метод mysql.createConnection() используется для обмена данными с сервером MySQL. Метод connect() используется для подключения к серверу. Метод query() используется для выполнения SQL-запроса к базе данных MySQL. Массив результатов используется для хранения результатов запроса.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'mydemoserver.mysql.database.azure.com',
user: 'myadmin@mydemoserver',
password: 'your_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.')
});
};
Обновление данных
Используйте указанный ниже код с инструкцией SQL UPDATE для подключения и обновления данных.
Метод mysql.createConnection() используется для обмена данными с сервером MySQL. Метод connect() используется для подключения к серверу. Метод query() используется для выполнения SQL-запроса к базе данных MySQL.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'mydemoserver.mysql.database.azure.com',
user: 'myadmin@mydemoserver',
password: 'your_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 = ?', [200, '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.')
});
};
Удаление данных
Используйте указанный ниже код, чтобы подключиться и удалить данные с помощью инструкции SQL DELETE.
Метод mysql.createConnection() используется для обмена данными с сервером MySQL. Метод connect() используется для подключения к серверу. Метод query() используется для выполнения SQL-запроса к базе данных MySQL.
const mysql = require('mysql2');
const fs = require('fs');
var config =
{
host: 'mydemoserver.mysql.database.azure.com',
user: 'myadmin@mydemoserver',
password: 'your_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