Szybki start: nawiązywanie połączeń i wykonywanie zapytań dotyczących danych w usłudze Azure Database for MySQL przy użyciu Node.js
Uwaga
W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i planowanie. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.
DOTYCZY: Azure Database for MySQL — pojedynczy serwer
Ważne
Pojedynczy serwer usługi Azure Database for MySQL znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do serwera elastycznego usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do serwera elastycznego usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MySQL — pojedynczy serwer?
W tym przewodniku Szybki start nawiąż połączenie z usługą Azure Database for MySQL przy użyciu Node.js. Następnie użyjesz instrukcji SQL do wykonywania zapytań, wstawiania, aktualizowania i usuwania danych w bazie danych z platform Mac, Linux i Windows.
W tym artykule założono, że wiesz już, jak programować przy użyciu Node.js, ale dopiero zaczynasz pracę z usługą Azure Database for MySQL.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Serwer usługi Azure Database for MySQL. Utwórz serwer usługi Azure Database for MySQL przy użyciu witryny Azure Portal lub utwórz serwer usługi Azure Database for MySQL przy użyciu interfejsu wiersza polecenia platformy Azure.
Ważne
Upewnij się, że adres IP, z którego nawiązujesz połączenie, został dodany reguł zapory serwera przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure
Instalowanie środowiska Node.js i łącznika programu MySQL
W zależności od platformy postępuj zgodnie z instrukcjami w odpowiedniej sekcji, aby zainstalować Node.js. Użyj narzędzia npm, aby zainstalować pakiet mysql2 i jego zależności w folderze projektu.
Odwiedź stronę pobierania programu Node.js i wybierz odpowiednią opcję Instalatora Windows.
Utwórz lokalny folder projektu, taki jak
nodejsmysql
.Otwórz wiersz polecenia, a następnie zmień katalog na folder projektu, na przykład
cd c:\nodejsmysql\
Uruchom narzędzie NPM, aby zainstalować bibliotekę mysql2 w folderze projektu.
cd c:\nodejsmysql\ "C:\Program Files\nodejs\npm" install mysql2 "C:\Program Files\nodejs\npm" list
Sprawdź instalację, sprawdzając tekst danych wyjściowych polecenia
npm list
. Numer wersji może się różnić po wydaniu nowych poprawek.
Pobieranie informacji o połączeniu
Pobierz informacje o połączeniu potrzebne do nawiązania połączenia z usługą Azure Database for MySQL. Potrzebna jest w pełni kwalifikowana nazwa serwera i poświadczenia logowania.
- Zaloguj się w witrynie Azure Portal.
- W menu po lewej stronie w witrynie Azure Portal wybierz pozycję Wszystkie zasoby, a następnie wyszukaj utworzony serwer (na przykład mydemoserver).
- Wybierz nazwę serwera.
- Po przejściu do panelu Przegląd serwera zanotuj nazwę serwera i nazwę logowania administratora serwera. Jeśli zapomnisz hasła, możesz również je zresetować z poziomu tego panelu.
Uruchamianie przykładowych kodów
Wklej kod JavaScript do nowych plików tekstowych, a następnie zapisz go w folderze projektu z rozszerzeniem pliku .js (np. C:\nodejsmysql\createtable.js lub /home/username/nodejsmysql/createtable.js).
Zastąp
host
opcje ,user
password
idatabase
konfiguracji w kodzie wartościami określonymi podczas tworzenia serwera i bazy danych.Uzyskaj certyfikat SSL: pobierz certyfikat wymagany do komunikacji za pośrednictwem protokołu SSL z serwerem https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem usługi Azure Database for MySQL i zapisz plik certyfikatu na dysku lokalnym.
W przypadku programów Microsoft Internet Explorer i Microsoft Edge: po zakończeniu pobierania zmień nazwę certyfikatu na DigiCertGlobalRootCA.crt.pem.
Zobacz następujące linki do certyfikatów dla serwerów w suwerennych chmurach: Azure Government, Microsoft Azure obsługiwane przez firmę 21Vianet i Azure (Niemcy).
ssl
W opcji konfiguracji zastąpca-cert
nazwę pliku ścieżką do tego pliku lokalnego.Otwórz wiersz polecenia lub powłokę bash, a następnie zmień katalog na folder
cd nodejsmysql
projektu .Aby uruchomić aplikację, wprowadź polecenie node, a następnie nazwę pliku, na przykład
node createtable.js
.W systemie Windows, jeśli aplikacja węzła nie znajduje się w ścieżce zmiennej środowiskowej, może być konieczne użycie pełnej ścieżki do uruchomienia aplikacji węzła, takiej jak
"C:\Program Files\nodejs\node.exe" createtable.js
Nawiązywanie połączenia, tworzenie tabeli i wstawianie danych
Użyj poniższego kodu, aby nawiązać połączenie i załadować dane przy użyciu instrukcji CREATE TABLE i INSERT INTO języka SQL.
Metoda mysql.createConnection() służy do połączenia interfejsem z serwerem programu MySQL. Funkcja connect() służy do nawiązywania połączenia z serwerem. Funkcja query() służy do wykonywania zapytania SQL względem bazy danych 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.')
});
};
Odczyt danych
Użyj poniższego kodu, aby nawiązać połączenie i odczytać dane za pomocą instrukcji SELECT języka SQL.
Metoda mysql.createConnection() służy do połączenia interfejsem z serwerem programu MySQL. Metoda connect() służy do nawiązywania połączenia z serwerem. Metoda query() służy do wykonywania zapytania SQL względem bazy danych MySQL. Tablica wyników jest używana do przechowywania wyników zapytania.
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.')
});
};
Aktualizowanie danych
Użyj poniższego kodu, aby nawiązać połączenie i zaktualizować dane przy użyciu instrukcji UPDATE JĘZYKA SQL.
Metoda mysql.createConnection() służy do połączenia interfejsem z serwerem programu MySQL. Metoda connect() służy do nawiązywania połączenia z serwerem. Metoda query() służy do wykonywania zapytania SQL względem bazy danych 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.')
});
};
Usuwanie danych
Użyj następującego kodu, aby nawiązać połączenie i usunąć dane przy użyciu instrukcji DELETE języka SQL.
Metoda mysql.createConnection() służy do połączenia interfejsem z serwerem programu MySQL. Metoda connect() służy do nawiązywania połączenia z serwerem. Metoda query() służy do wykonywania zapytania SQL względem bazy danych 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.')
});
};
Czyszczenie zasobów
Aby wyczyścić wszystkie zasoby używane w tym przewodniku Szybki start, usuń grupę zasobów przy użyciu następującego polecenia:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes