Conecte-se a um cluster do AnalyticDB for MySQL usando o pacote de driver mysql para Node.js.
Pré-requisitos
Antes de começar, verifique se você tem:
Node.js instalado. Baixe-o em nodejs.org
-
Pacote de driver
mysqlinstalado. Execute o comando a seguir para instalá-lo:npm install mysql --save Endereço IP do host Node.js adicionado à lista de permissões do cluster. Consulte Configurar uma lista de permissões
-
Endpoint do cluster. Obtenha-o na página Cluster Information do console do AnalyticDB for MySQL:
Se o host Node.js (por exemplo, uma instância do Elastic Compute Service (ECS)) estiver na mesma Virtual Private Cloud (VPC) do cluster, use o endpoint interno
Caso contrário, solicite um endpoint público. Consulte Solicitar ou liberar um endpoint público
Conectar-se a um cluster do AnalyticDB for MySQL
Armazene as credenciais como variáveis de ambiente em vez de codificá-las diretamente no código source.
Defina as seguintes variáveis de ambiente antes de executar o exemplo:
|
Variável |
Descrição |
Exemplo |
|
|
Endpoint do cluster |
|
|
|
Número da porta |
|
|
|
Nome da conta (privilegiada ou padrão) |
|
|
|
Senha da conta |
|
|
|
Nome do banco de dados |
|
O exemplo a seguir conecta-se ao cluster, executa uma consulta e encerra a conexão:
// 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.');
});
}
);
});
Após a execução bem-sucedida do código, a saída será semelhante a:
Connection established.
Count: 42
Connection closed.
Observações de uso
Use um pool de conexões em produção. Criar uma nova conexão para cada solicitação aumenta a latência. Utilize
mysql.createPool()para gerenciar um pool de conexões reutilizáveis. Consulte a documentação do mysql para obter detalhes.Adote consultas parametrizadas para evitar injeção de SQL. O pacote
mysqlfaz o escape dos valores da consulta no lado do cliente. Passe os valores fornecidos pelo usuário como parâmetros em vez de interpolá-los nas strings SQL. Veja Escaping query values para exemplos.