Szybki start: nawiązywanie połączeń i wykonywanie zapytań dotyczących danych w usłudze Azure Database for MySQL — serwer elastyczny przy użyciu Node.js
DOTYCZY: Azure Database for MySQL — serwer elastyczny
W tym przewodniku Szybki start nawiąż połączenie z serwerem elastycznym usługi 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 elastycznym serwerem usługi Azure Database for MySQL.
Wymagania wstępne
Ten przewodnik Szybki start jako punktu wyjścia używa zasobów utworzonych w jednym z tych przewodników:
- Tworzenie wystąpienia serwera elastycznego usługi Azure Database for MySQL przy użyciu witryny Azure Portal
- Tworzenie wystąpienia elastycznego serwera 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
Uzyskaj informacje o połączeniu potrzebne do nawiązania połączenia z wystąpieniem serwera elastycznego usługi 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ładów kodu
- 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 elastycznego serwera i bazy danych MySQL. - Uzyskiwanie certyfikatu SSL: aby używać szyfrowanych połączeń z aplikacjami klienckimi, należy pobrać publiczny certyfikat SSL, który jest również dostępny w bloku Sieci w witrynie Azure Portal, jak pokazano na poniższym zrzucie ekranu.
Zapisz plik certyfikatu w preferowanej lokalizacji.
ssl
W opcji konfiguracji zastąpca-cert
nazwę pliku ścieżką do tego pliku lokalnego. Umożliwi to aplikacji bezpieczne łączenie się z bazą danych za pośrednictwem protokołu SSL.- 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 interfejsu z elastycznym wystąpieniem serwera usługi Azure Database for 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: '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.')
});
};
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 interfejsu z elastycznym wystąpieniem serwera usługi Azure Database for 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: '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.')
});
};
Aktualizowanie danych
Użyj poniższego kodu, aby nawiązać połączenie i zaktualizować dane za pomocą instrukcji UPDATE języka SQL.
Metoda mysql.createConnection() służy do interfejsu z elastycznym wystąpieniem serwera usługi Azure Database for 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: '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.')
});
};
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 interfejsu z elastycznym wystąpieniem serwera usługi Azure Database for 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: '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.')
});
};
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
Następne kroki
- Szyfrowana łączność przy użyciu protokołu Transport Layer Security (TLS 1.2) na serwerze elastycznym usługi Azure Database for MySQL.
- Dowiedz się więcej o sieci na serwerze elastycznym usługi Azure Database for MySQL.
- Tworzenie reguł zapory serwera elastycznego usługi Azure Database for MySQL i zarządzanie nimi przy użyciu witryny Azure Portal.
- Tworzenie elastycznej sieci wirtualnej serwera usługi Azure Database for MySQL i zarządzanie nią przy użyciu witryny Azure Portal.