Connectez-vous à une instance ApsaraDB RDS for MySQL depuis une application Java, Python ou C en utilisant le pilote JDBC, la bibliothèque PyMySQL ou l'API MySQL C.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance ApsaraDB RDS for MySQL en cours d'exécution
Une base de données et un compte créés sur l'instance
L'adresse IP de votre hôte d'application ajoutée à la liste d'autorisation de l'instance
Obtenir les informations de connexion
Récupérez l'endpoint interne ou public ainsi que le port de votre instance RDS avant d'écrire le code de connexion.
Endpoint interne : utilisez cet endpoint lorsque votre application s'exécute sur une instance Elastic Compute Service (ECS) qui se trouve dans la même région et possède le même type de réseau que l'instance RDS.
Endpoint public : utilisez cet endpoint pour tous les autres scénarios, par exemple pour vous connecter depuis une machine locale ou une instance ECS située dans une autre région.
Pour plus d'informations, consultez Afficher et modifier les endpoints internes et publics ainsi que les numéros de port d'une instance ApsaraDB RDS for MySQL.
Paramètres de connexion
Les paramètres suivants apparaissent dans tous les exemples de code de cette rubrique.
| Paramètre | Description |
|---|---|
<Host> |
L'endpoint interne ou public de l'instance RDS. |
<Port> |
Le numéro de port correspondant au type d'endpoint : port interne pour les connexions internes, port public pour les connexions Internet. |
<myDatabase> |
Le nom de la base de données. |
<myUsername> |
Le nom d'utilisateur du compte utilisé pour se connecter à l'instance. |
<myPassword> |
Le mot de passe du compte. |
Se connecter avec Java
L'exemple Java utilise JDBC et le pilote mysql-connector-java pour établir une connexion et exécuter une requête SELECT sur la table courses.
Installer le pilote
Ajoutez la dépendance suivante au fichier pom.xml de votre projet Maven :
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
Exemple de code
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DatabaseConnection {
public static void main(String args[]) {
// Replace the placeholders with your actual connection details
String connectionUrl = "jdbc:mysql://<Host>:<Port>/<myDatabase>";
ResultSet resultSet;
try (Connection connection = DriverManager.getConnection(connectionUrl, "<myUsername>", "<myPassword>");
Statement statement = connection.createStatement()) {
String selectSql = "SELECT * FROM `courses`";
resultSet = statement.executeQuery(selectSql);
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Sortie attendue
Si la connexion aboutit et que la table courses contient des données, la valeur de la colonne name de chaque ligne s'affiche dans la console :
Introduction to Cloud Computing
Database Fundamentals
Advanced Java Programming
Si une trace de pile SQLException s'affiche à la place, consultez la section Dépannage.
Se connecter avec Python
L'exemple Python utilise PyMySQL pour se connecter et exécuter une requête SELECT sur la table courses.
Installer PyMySQL
Exécutez la commande appropriée selon votre version de Python :
Python 3 :
pip3 install PyMySQLPython 2 :
pip install pymysql==0.9.3
Exemple de code
import pymysql
connection = pymysql.connect(
host='<Host>',
port=<Port>,
user='<myUsername>',
passwd='<myPassword>',
db='<myDatabase>'
)
try:
with connection.cursor() as cursor:
sql = "SELECT * FROM `courses`"
cursor.execute(sql)
for result in cursor:
print(result)
except pymysql.err.OperationalError as e:
if e.args[0] == 1045:
print("Access denied: check your username and password.")
elif e.args[0] == 1049:
print("Unknown database: check the database name.")
else:
print(f"Connection error: {e}")
finally:
connection.close()
Sortie attendue
Si la connexion aboutit et que la table courses contient des données, chaque ligne s'affiche sous forme de tuple :
('Introduction to Cloud Computing',)
('Database Fundamentals',)
('Advanced Java Programming',)
Se connecter avec C
L'exemple C utilise l'API MySQL C pour se connecter et exécuter une requête SELECT sur la table courses.
Installer la bibliothèque MySQL C
Sur CentOS, exécutez :
sudo yum install mysql-devel
Exemple de code
#include <stdio.h>
#include <mysql.h>
#include <string.h>
int main(void)
{
MYSQL *t_mysql;
MYSQL_RES *res = NULL;
MYSQL_ROW row;
int rc, i, fields;
int rows;
char select[] = "select * from courses";
t_mysql = mysql_init(NULL);
if (NULL == t_mysql) {
printf("init failed\n");
return 1;
}
/* Replace the placeholders with your actual connection details */
if (NULL == mysql_real_connect(t_mysql, "<Host>", "<myUsername>", "<myPassword>",
"<myDatabase>", <Port>, NULL, 0)) {
printf("connect failed: %s\n", mysql_error(t_mysql));
return 1;
}
if (mysql_real_query(t_mysql, select, strlen(select)) != 0) {
printf("select failed: %s\n", mysql_error(t_mysql));
mysql_close(t_mysql);
return 1;
}
res = mysql_store_result(t_mysql);
if (NULL == res) {
printf("mysql_store_result(): %s\n", mysql_error(t_mysql));
mysql_close(t_mysql);
return 0;
}
fields = mysql_num_fields(res);
while ((row = mysql_fetch_row(res))) {
for (i = 0; i < fields; i++) {
printf("%s\t", row[i]);
}
printf("\n");
}
mysql_free_result(res);
mysql_close(t_mysql);
return 0;
}
Sortie attendue
Si la connexion aboutit, chaque ligne de la table courses s'affiche avec des colonnes séparées par des tabulations :
Introduction to Cloud Computing
Database Fundamentals
Advanced Java Programming
Le code exemple interroge une table courses à titre d'illustration. Remplacez l'instruction SQL et le nom de la table par des requêtes correspondant à votre schéma de base de données réel.
Dépannage
Si la connexion échoue, vérifiez le message d'erreur renvoyé par le pilote ou la bibliothèque. Les causes courantes incluent :
Endpoint ou port incorrect — vérifiez les valeurs obtenues dans la section Obtenir les informations de connexion
Nom d'utilisateur ou mot de passe incorrect — revérifiez les identifiants du compte
Adresse IP non ajoutée à la liste d'autorisation — ajoutez l'IP de l'hôte de l'application à la liste d'autorisation de l'instance
Endpoint public non activé — activez l'endpoint public dans la console si vous vous connectez depuis l'extérieur du VPC
Pour un guide de dépannage complet, consultez Résoudre le problème d'impossibilité de connexion à une instance RDS.
Étapes suivantes
Pour vous connecter depuis une fonction serverless, configurez l'accès VPC pour votre fonction et ajoutez l'IP de la fonction à la liste d'autorisation RDS. Consultez Accéder à une base de données ApsaraDB RDS for MySQL dans la documentation Function Compute.
Pour plus d'exemples de connexion Python, consultez le dépôt start-fc-db sur GitHub.