Rövid útmutató: Adatok csatlakoztatása és lekérdezése a Node.js használatával az Azure Database for MySQL-ben
Figyelemfelhívás
Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Ennek megfelelően fontolja meg a használatot és a tervezést. További információ: CentOS End Of Life útmutató.
A következőkre vonatkozik: Azure Database for MySQL – Önálló kiszolgáló
Fontos
Az önálló Azure Database for MySQL-kiszolgáló a kivonási útvonalon van. Határozottan javasoljuk, hogy frissítsen rugalmas Azure Database for MySQL-kiszolgálóra. További információ a rugalmas Azure Database for MySQL-kiszolgálóra való migrálásról: Mi történik az önálló Azure Database for MySQL-kiszolgálóval?
Ebben a rövid útmutatóban Node.js használatával csatlakozhat egy Azure Database for MySQL-hez. Ezután SQL-utasításokkal lekérdezheti, beszúrhatja, frissítheti és törölheti az adatbázisban lévő adatokat Mac, Linux és Windows platformokról.
Ez a cikk feltételezi, hogy ismeri a Node.js használatával történő fejlesztést, de még nem használta az Azure Database for MySQL-t.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Azure Database for MySQL-kiszolgáló. Azure Database for MySQL-kiszolgáló létrehozása az Azure Portalon vagy Azure Database for MySQL-kiszolgáló létrehozása az Azure CLI használatával.
Fontos
Győződjön meg arról, hogy a kiszolgáló tűzfalszabályai az Azure Portal vagy az Azure CLI használatával lettek hozzáadva a csatlakozó IP-címhez
A Node.js és a MySQL-összekötő telepítése
A platformtól függően kövesse a megfelelő szakaszban található utasításokat a Node.js telepítéséhez. Az npm használatával telepítse a mysql2-csomagot és annak függőségeit a projektmappába.
Látogasson el a Node.js letöltési oldalára, majd válassza ki a kívánt Windows-telepítési lehetőséget.
Hozzon létre egy helyi projektmappát, például:
nodejsmysql
.Nyissa meg a parancssort, majd módosítsa a könyvtárat a projektmappára, például
cd c:\nodejsmysql\
A mysql2 könyvár a projektmappába telepítéséhez futtassa az NPM eszközt.
cd c:\nodejsmysql\ "C:\Program Files\nodejs\npm" install mysql2 "C:\Program Files\nodejs\npm" list
Ellenőrizze a telepítést a
npm list
kimeneti szöveg ellenőrzésével. Új javítások kiadásakor a verziószám változhat.
Kapcsolatadatok lekérése
Kérje le a MySQL-hez készült Azure Database-hez való csatlakozáshoz szükséges kapcsolatadatokat. Szüksége lesz a teljes kiszolgálónévre és a bejelentkezési hitelesítő adatokra.
- Jelentkezzen be az Azure Portalra.
- Az Azure Portal bal oldali menüjében válassza a Minden erőforrás lehetőséget, majd keresse meg a létrehozott kiszolgálót (például a mydemoservert).
- Válassza ki a kiszolgálónevet.
- A kiszolgáló Áttekintés paneléről jegyezze fel a Kiszolgálónevet és a Kiszolgáló-rendszergazdai bejelentkezési nevet. Ha elfelejti a jelszavát, ezen a panelen új jelszót is tud kérni.
A mintakódok futtatása
Illessze be a JavaScript-kódot az új szövegfájlokba, majd mentse egy projektmappába .js fájlkiterjesztéssel (például C:\nodejsmysql\createtable.js vagy /home/username/nodejsmysql/createtable.js).
Cserélje le
host
a kódban a ,user
éspassword
database
a konfigurációs beállításokat a kiszolgáló és az adatbázis létrehozásakor megadott értékekre.SSL-tanúsítvány beszerzése: Töltse le az SSL-en keresztüli kommunikációhoz szükséges tanúsítványt az Azure Database for MySQL-kiszolgálóval, https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem és mentse a tanúsítványfájlt a helyi meghajtóra.
Microsoft Internet Explorer és Microsoft Edge esetén: A letöltés befejezése után nevezze át a tanúsítványt DigiCertGlobalRootCA.crt.pem névre.
A szuverén felhők kiszolgálóihoz tartozó tanúsítványokra vonatkozó alábbi hivatkozások találhatók: Azure Government, a 21Vianet által üzemeltetett Microsoft Azure és az Azure Germany.
ssl
A konfigurációs beállításban cserélje le aca-cert
fájlnevet a helyi fájl elérési útjára.Nyissa meg a parancssort vagy a bash-felületet, majd módosítsa a könyvtárat a projektmappába
cd nodejsmysql
.Az alkalmazás futtatásához adja meg a csomópont parancsot, majd a fájl nevét, például
node createtable.js
.Windows rendszeren, ha a csomópontalkalmazás nem szerepel a környezeti változó elérési útján, előfordulhat, hogy a teljes elérési utat kell használnia a csomópontalkalmazás elindításához, például
"C:\Program Files\nodejs\node.exe" createtable.js
Csatlakozás, táblák létrehozása és adatok beszúrása
A következő kóddal csatlakozhat, és betöltheti az adatokat a CREATE TABLE és az INSERT INTO SQL-utasításokkal.
A mysql.createConnection() metódus a MySQL-kiszolgálóhoz való csatlakozásra szolgál. A connect() függvény a kiszolgálóval való kapcsolat létesítésére szolgál. A query() függvény az SQL-lekérdezés MySQL-adatbázison való végrehajtására szolgál.
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.')
});
};
Adatok beolvasása
A következő kóddal csatlakozhat, és beolvashatja az adatokat a SELECT SQL-utasítással.
A mysql.createConnection() metódus a MySQL-kiszolgálóhoz való csatlakozásra szolgál. A connect() metódus a kiszolgálóval való kapcsolat létesítésére szolgál. A query() metódus az SQL-lekérdezés MySQL-adatbázison való végrehajtására szolgál. Az eredménytömb a lekérdezés eredményeinek tárolására használható.
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.')
});
};
Adatok frissítése
Az alábbi kóddal csatlakozhat és frissítheti az adatokat egy UPDATE SQL-utasítás használatával.
A mysql.createConnection() metódus a MySQL-kiszolgálóhoz való csatlakozásra szolgál. A connect() metódus a kiszolgálóval való kapcsolat létesítésére szolgál. A query() metódus az SQL-lekérdezés MySQL-adatbázison való végrehajtására szolgál.
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.')
});
};
Adatok törlése
Az alábbi kóddal csatlakozhat és törölhet adatokat egy DELETE SQL utasítással.
A mysql.createConnection() metódus a MySQL-kiszolgálóhoz való csatlakozásra szolgál. A connect() metódus a kiszolgálóval való kapcsolat létesítésére szolgál. A query() metódus az SQL-lekérdezés MySQL-adatbázison való végrehajtására szolgál.
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 erőforrások eltávolítása
A rövid útmutató során használt összes erőforrás törléséhez törölje az erőforráscsoportot az alábbi paranccsal:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes