Connexion d'une application externe
Vos applications et pilotes utilisent des chaînes de connexion pour établir une connexion à IBM Cloud® Databases for MySQL. Le service fournit des chaînes de connexion spécifiquement pour des pilotes et des applications. Les chaînes de connexion sont affichées dans le panneau Points de terminaison de la vue d'ensemble de votre déploiement et peuvent également être récupérées à partir du plug-in CLI de Cloud Databases et de l'API Cloud Databases.
Les chaînes de connexion peuvent être utilisées par n'importe laquelle des données d'identification que vous avez créées sur votre déploiement. Bien que vous puissiez utiliser le nom d'administrateur pour toutes vos connexions et applications, il peut être préférable de créer des utilisateurs spécifiquement pour vos applications. La documentation sur la génération de données d'identification est accessible sur la page Création d'utilisateurs et obtention de chaînes de connexion.
Connexion avec un pilote de langage
Toutes les informations dont un conducteur a besoin pour établir une connexion à votre déploiement se trouve dans la section "mysql" de vos chaînes de connexion. Le tableau ci-après est fourni à titre de référence.
Nom de zone | Index | Description |
---|---|---|
Type |
Type de connexion - pour MySQL,, il s'agit de "URI". | |
Scheme |
Schéma d'un URI - pour MySQL,, il s'agit de "mysql". | |
Path |
Chemin pour un URI- Pour MySQL, il s'agit du nom de la base de données. La valeur par défaut est ibmclouddb . |
|
Authentication |
Username |
Nom d'utilisateur que vous utilisez pour vous connecter. |
Authentication |
Password |
Le mot de passe de l'utilisateur - peut être affiché sous la forme $PASSWORD . |
Authentication |
Method |
Méthode d'authentification. L'authentification "directe" est gérée par le pilote. |
Hosts |
0... |
Nom d'hôte et port auxquels se connecter. |
Composed |
0... |
Un URI combinant Scheme, Authentication, Host et Path. |
Certificate |
Name |
Nom attribué au certificat propriétaire du service pour le déploiement de la base de données. |
Certificate |
Base64 | Version codée en base64 du certificat. |
0...
indique une ou plusieurs de ces entrées dans un tableau.
De nombreux pilotes MySQL peuvent établir une connexion à votre déploiement en fonction de la chaîne de connexion au format URI trouvée dans la zone "composée" des informations de connexion. Par exemple
mysql://ibm_cloud_30399dec_4835_4967_a23d_30587a08d9a8:$PASSWORD@981ac415-5a35-4ac7-b6bb-fb609326dc42.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud:32704/ibmclouddb?ssl-mode=verify-full
Pour plus d'informations sur les états ssl-mode
, voir Paramètres de connexion supplémentaires.
Cet exemple utilise les informations de votre chaîne de connexion et le pilote Java jdbc pour établir une connexion à votre base de données.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class App {
private final String STATUS_COMMAND = "SHOW VARIABLES LIKE '%version%';";
private Connection connect = null;
private Statement stmt = null;
private ResultSet rs = null;
private final String url = "mysql://127.0.0.1:30799";
private final String username = "";
private final String password = "";
private final Boolean useSSL = true;
public static void main(String args[]) throws Exception {
App app = new App();
final byte maxConnectionAttempt = 5;
byte currentConnectionAttempt = 0;
while (!app.connectDatabase() && currentConnectionAttempt < maxConnectionAttempt)
++currentConnectionAttempt;
if (currentConnectionAttempt >= maxConnectionAttempt) {
System.out.println(currentConnectionAttempt + " weren't successfull!");
} else {
app.printStatus();
app.closeConnection();
}
}
public void printStatus() {
try {
stmt = connect.createStatement();
rs = stmt.executeQuery(STATUS_COMMAND);
while (rs.next())
System.out.println(rs.getString(1) + ": " + rs.getString(2));
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
closeConnection();
}
}
private void closeConnection() {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (connect != null) {
connect.close();
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("Connection closed.");
}
public boolean connectDatabase() {
// https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-connect-drivermanager.html
try {
Properties props = new Properties();
props.setProperty("user", username);
props.setProperty("password", password);
props.setProperty("useSSL", Boolean.toString(useSSL));
props.setProperty("sslMode", (useSSL ? "REQUIRED" : "DISABLED"));
props.setProperty("requireSSL", Boolean.toString(useSSL));
props.setProperty("verifyServerCertificate", Boolean.toString(useSSL));
Class.forName("com.mysql.cj.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:" + url, props);
return true;
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} catch (ClassNotFoundException ex) {
System.out.println("Connector class can not be found: " + ex.getMessage());
}
return false;
}
}
L'exemple suivant utilise les informations de votre chaîne de connexion et du pilote Python pymysql pour vous connecter à votre base de données. Il s'agit juste d'un exemple de connexion simple, sans traitement d'erreurs ou logique de relance et peut ne pas convenir à la production.
import pymysql
connection = pymysql.connect(
host="hostname",
port=32089,
user="username",
passwd="password",
ssl_ca="/home/user/mysql_ca.crt",
ssl_verify_cert=True,
ssl_verify_identity=True)
cursor = connection.cursor()
cursor.execute("SHOW STATUS;")
for row in cursor:
print(row[0] + "\t" + row[1])
cursor.close()
connection.close()
Prise en charge du certificat TLS du pilote et du certificat propriétaire du service
TLS 1.2 est activé pour toutes les connexions à Databases for MySQL, par conséquent, le pilote que vous utilisez pour la connexion doit pouvoir prendre en charge le chiffrement. Votre déploiement est également accompagné d'un certificat propriétaire de service afin que le pilote puisse vérifier le serveur lors de la connexion.
Pour plus d'informations, voir la foire aux questions sur les certificatsCloud Databases.
Utilisation du certificat de propriété du service
- Copiez les informations de certificat à partir du panneau Noeuds finaux ou de la zone Base64 des informations de connexion.
- Si besoin, décodez la chaîne Base64 en texte.
- Sauvegardez le certificat dans un fichier. (Vous pouvez utiliser le nom qui est fourni ou votre propre nom de fichier).
- Indiquez le chemin d'accès au certificat au pilote ou au client.

Prise en charge du plug-in CLI pour le certificat propriétaire du service
Vous pouvez afficher le certificat décodé pour votre déploiement avec le plug-in d'interface de ligne de commande à l'aide de la commande ibmcloud cdb deployment-cacert "your-service-name"
. Elle décode la chaîne base64
en texte. Copiez et sauvegardez le résultat de la commande dans un fichier et indiquez le chemin du fichier au pilote.
Autres pilotes
MySQL dispose d'un tableau de pilotes de langue. Le tableau ci-dessous couvre quelques-uns des plus courants. Consultez les connecteurs et les API de MySQL pour plus d'informations.
Langue | Pilote | Exemples |
---|---|---|
PHP Hypertext Preprocessor | mysql |
Prise en charge des API pour les transactions |
Ruby | ruby-mysql |
L'API Ruby/MySQL |
C# | ODBC |
Guide du développeurLiMySQL ODBC |
Go | mysql |
Go-MySQL-Driver |
Lors de la connexion à MySQL à l'aide de PHP, il est nécessaire de remplacer le plug-in d'authentification sha256_password
par mysql_native_password
.