Connectez-vous à un cluster AnalyticDB for MySQL en utilisant le package de pilotes mysql pour Node.js.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Node.js installé. Téléchargez-le depuis nodejs.org
-
Le package de pilotes
mysqlinstallé. Exécutez la commande suivante pour l'installer :npm install mysql --save L'adresse IP de votre hôte Node.js ajoutée à la liste d'autorisation de votre cluster. Consultez Configurer une liste d'autorisation
-
Un endpoint de cluster. Récupérez-le depuis la page Cluster Information de la console AnalyticDB for MySQL :
Si votre hôte Node.js (par exemple, une instance Elastic Compute Service (ECS)) se trouve dans le même Virtual Private Cloud (VPC) que votre cluster, utilisez l'endpoint interne.
Sinon, demandez un endpoint public. Consultez Demander ou libérer un endpoint public
Se connecter à un cluster AnalyticDB for MySQL
Stockez vos identifiants sous forme de variables d'environnement plutôt que de les coder en dur dans votre code source.
Définissez les variables d'environnement suivantes avant d'exécuter l'exemple :
| Variable | Description | Exemple |
|---|---|---|
ADB_HOST |
Endpoint du cluster | am-bp***.ads.aliyuncs.com |
ADB_PORT |
Numéro de port | 3306 |
ADB_USER |
Nom du compte (privilégié ou standard) | account_name |
ADB_PASSWORD |
Mot de passe du compte | account_password |
ADB_DATABASE |
Nom de la base de données | db_name |
L'exemple suivant se connecte au cluster, exécute une requête et ferme la connexion :
// Step 1: Import the mysql driver.
const mysql = require('mysql');
// Step 2: Create a connection using credentials from environment variables.
const connection = mysql.createConnection({
host: process.env.ADB_HOST,
port: parseInt(process.env.ADB_PORT, 10) || 3306,
user: process.env.ADB_USER,
password: process.env.ADB_PASSWORD,
database: process.env.ADB_DATABASE,
// Timeout for establishing the connection. Default: 10000 ms.
connectTimeout: 10000,
});
// Step 3: Open the connection.
connection.connect((err) => {
if (err) throw err;
console.log('Connection established.');
// Step 4: Run a query.
connection.query(
'SELECT count(*) AS count FROM information_schema.tables',
(err, results) => {
if (err) throw err;
console.log('Count:', results[0].count);
// Step 5: Close the connection.
connection.end((err) => {
if (err) throw err;
console.log('Connection closed.');
});
}
);
});
Lorsque le code s'exécute avec succès, la sortie est similaire à :
Connection established.
Count: 42
Connection closed.
Notes d'utilisation
Utilisez un pool de connexions en production. Créer une nouvelle connexion pour chaque requête ajoute de la latence. Utilisez
mysql.createPool()pour gérer un pool de connexions réutilisables. Consultez la documentation mysql pour plus de détails.Utilisez des requêtes paramétrées pour prévenir les injections SQL. Le package
mysqléchappe les valeurs de requête côté client. Transmettez les valeurs fournies par l'utilisateur en tant que paramètres plutôt que de les interpoler dans des chaînes SQL. Consultez Échappement des valeurs de requête pour des exemples.