Connexion d'une application externe à votre déploiement PostgreSQL
Vos applications et pilotes utilisent des chaînes de connexion pour établir une connexion à IBM Cloud® Databases for PostgreSQL. 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 Endpoints de la vue d'ensemble de votre déploiement, et peuvent également être récupérées à partir du plug-in CLI Cloud Databases Et de l'Cloud Databases API.
Les chaînes de connexion peuvent être utilisées par n'importe laquelle des informations d'identification que vous créez dans le cadre de 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 à utiliser spécifiquement pour vos applications. Pour plus d'informations, voir L'obtention des chaînes de connexion.
Connexion à votre déploiement PostgreSQL avec le pilote d'un langage
Toutes les informations dont un pilote a besoin pour établir une connexion avec votre déploiement se trouvent dans la section "postgres" 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 PostgreSQL, il s'agit de "URI. " | |
Scheme |
Schéma pour un URI. Pour PostgreSQL, il s'agit de "postgresql. " | |
Path |
Chemin pour un URI. Pour PostgreSQL, 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 |
Mot de passe pour l'utilisateur - peut s'afficher 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... |
URI combinant le schéma, l'authentification, l'hôte et le chemin |
Certificate |
Name |
Nom attribué au certificat autosigné pour le déploiement de la base de données |
Certificate |
Base64 | Version codée en base64 du certificat. |
0...
indique qu'il peut y avoir une ou plusieurs de ces entrées dans un tableau.
De nombreux pilotes PostgreSQL peuvent établir une connexion avec votre déploiement lorsqu'ils disposent de la chaîne de connexion au format URI qui se trouve dans la zone "composed" des informations de connexion. Par exemple :
postgres://ibm_cloud_30399dec_4835_4967_a23d_30587a08d9a8:$PASSWORD@981ac415-5a35-4ac7-b6bb-fb609326dc42.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud:32704/ibmclouddb?sslmode=verify-full
L'exemple suivant utilise les informations de votre chaîne de connexion et du pilote Java jdbc
pour vous connecter à 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;
import java.util.logging.*;
public class PGConnect {
private final static Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
private Connection connect() {
final String url = "jdbc:postgresql://host:port/ibmclouddb";
Properties props = new Properties();
props.setProperty("user","admin");
props.setProperty("password","mypassword123");
props.setProperty("ssl","true");
props.setProperty("sslmode","verify-full");
props.setProperty("sslrootcert", "/path/to/cert");
Connection conn = null;
while (conn == null) {
try {
conn = DriverManager.getConnection(url, props);
System.out.println("Connected to PG");
} catch (SQLException e) {
System.out.printf("%s\n", e);
LOGGER.info("Not connected, retying ...");
}
}
return conn;
}
public static void main(String[] args) {
PGConnect icd = new PGConnect();
try {
Connection connection = icd.connect();
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from pg_database");
while (rs.next()) {
System.out.println("DB Name: " + rs.getString(1));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
L'exemple suivant utilise les informations de votre chaîne de connexion et du pilote Python Psycopg2
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 psycopg2
try:
conn = psycopg2.connect(
host="hostname.databases.appdomain.cloud",
port= 31525,
user="username",
password="password",
sslmode="verify-full",
sslrootcert="/path/to/cert/ca-certificate.crt",
database="ibmclouddb")
except:
print("Unable to connect to database")
cur = conn.cursor()
cur.execute("SELECT datname FROM pg_database")
rows = cur.fetchall()
print("List of databases:")
for row in rows:
print(" ",row[0])
L'exemple suivant utilise les informations de votre chaîne de connexion et du pilote de noeud node-postgres
pour vous connecter à votre base de données.
const pg = require("pg");
const fs = require("fs");
let connectionString = "postgres://<username>:<password>@<host>:<port>/<database>";
let caCert = fs.readFileSync('/path/to/cert');
// set up a client with your PostgreSQL connection string and TLS options
let client = new pg.Client({
connectionString: connectionString,
ssl: {
ca: caCert,
rejectUnauthorized: true
}
});
client.connect(function(err) {
if (err) {
console.log(err);
process.exit(1);
} else {
// query for the names of the databases
client.query(
"SELECT datname FROM pg_database;",
function(err, result) {
if (err) {
console.log(err);
}
// return the names of the databases
console.log(result.rows);
client.end();
}
);
}
});
Pour utiliser le node-postgres driver
, supprimez le paramètre sslmode
de la chaîne de connexion du déploiement. Si ce n'est pas le cas, ce paramètre remplace les paramètres ssl: {...}
, ce qui empêche le
chargement correct du certificat de l'autorité de certification.
Prise en charge de TLS et de certificat autosigné pour le pilote
TLS 1.2 est activé pour toutes les connexions à Databases for PostgreSQL, par conséquent, le pilote que vous utilisez pour la connexion doit pouvoir prendre en charge le chiffrement. Votre déploiement est également fourni avec un certificat autosigné, par conséquent, le pilote peut vérifier le serveur lors de la connexion.
Pour plus d'informations, voir la foire aux questions sur les certificatsCloud Databases.
Utilisation du certificat autosigné
- 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 d'interface de ligne de commande pour le certificat autosigné
Vous pouvez afficher le certificat décodé pour votre déploiement avec le plug-in CLI à l'aide de la commande 'ibmcloud cdb deployment-cacert "example-deployment"
. 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
PostgreSQL possède un large éventail de pilotes de langage. Le tableau en répertorie quelques-uns des plus courants.
Langue | Pilote | Exemples |
---|---|---|
PHP Hypertext Preprocessor | pgsql |
Lien |
Ruby | ruby-pg |
Lien |
Ruby on Rails | Rails | Lien |
C# | ODBC |
Lien |
Go | pq |
Lien |
Node | node-postgres |
Lien |