Conectando um aplicativo externo à sua implementação do PostgreSQL
Os seus aplicativos e drivers usam sequências de conexões para fazer uma conexão com o IBM Cloud® Databases for PostgreSQL. O serviço fornece sequências de conexões especificamente para drivers e aplicativos. As cadeias de conexão são exibidas no painel Endpoints da Visão geral da sua implantação e também podem ser recuperadas no plug-in Cloud Databases CLI e na API Cloud Databases.
As cadeias de conexão podem ser usadas por qualquer uma das credenciais que você criar em sua implantação. Embora seja possível usar o usuário admin para todas as conexões e os aplicativos, pode ser melhor criar usuários especificamente para as conexões dos aplicativos com eles. Para obter mais informações, consulte Obtenção de cadeias de conexão.
Conectando-se à sua implementação do PostgreSQL com um driver de linguagem
Todas as informações que um driver precisa para fazer uma conexão com sua implementação está na seção "postgres" de suas sequências de conexões. A tabela contém um detalhamento para referência.
Nome do campo | Index | Descrição |
---|---|---|
Type |
Tipo de conexão - para PostgreSQL, é "URI". | |
Scheme |
Esquema para um URI - para PostgreSQL, é "postgresql". | |
Path |
Caminho para um URI - para o PostgreSQL é o nome do banco de dados. O padrão é ibmclouddb . |
|
Authentication |
Username |
O nome do usuário usado para se conectar. |
Authentication |
Password |
Uma senha para o usuário - pode ser mostrada como $PASSWORD |
Authentication |
Method |
Como a autenticação ocorre; a autenticação "direta" é manipulada pelo driver. |
Hosts |
0... |
Um nome do host e uma porta aos quais se conectar. |
Composed |
0... |
Um URI que combina Scheme (esquema), Authentication (autenticação), Host (host) e Path (caminho). |
Certificate |
Name |
O nome alocado para o certificado proprietário do serviço para a implementação do banco de dados. |
Certificate |
Base64 | Uma versão do certificado codificada em Base64. |
0...
indica que pode haver uma ou mais dessas entradas em uma matriz.
Muitos drivers do PostgreSQL são capazes de fazer uma conexão com sua implementação quando fornecida a sequência de conexões formatada pelo URI localizada no campo "composto" das informações de conexão. Por exemplo,
postgres://ibm_cloud_30399dec_4835_4967_a23d_30587a08d9a8:$PASSWORD@981ac415-5a35-4ac7-b6bb-fb609326dc42.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud:32704/ibmclouddb?sslmode=verify-full
O exemplo a seguir usa as informações de sua sequência de conexões e o driver Java jdbc
para conectar-se ao seu banco de dados.
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());
}
}
}
O exemplo a seguir usa as informações de sua sequência de conexões e o driver Python
Psycopg2
para conectar-se ao seu banco de dados. Este é apenas um exemplo simples de conexão, sem manipulação de erros ou lógica de nova tentativa e pode não ser adequado para a produção.
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])
O exemplo a seguir usa as informações de sua sequência de conexões e o driver Node node-postgres
para conectar-se ao seu banco de dados.
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();
}
);
}
});
Para usar o node-postgres driver
, remova o parâmetro sslmode
da string de conexão da implementação. Se não, este parâmetro substitui os parâmetros ssl: {...}
, impedindo o certificado CA de carregar adequadamente.
Suporte ao TLS do driver e ao certificado proprietário do serviço
Todas as conexões com o Databases for PostgreSQL são ativadas pelo TLS 1.2, portanto, o driver usado para a conexão precisa ser capaz de suportar criptografia. Sua implementação também vem com um certificado de propriedade do serviço para que o driver possa verificar o servidor na conexão.
Para obter mais informações, consulte Cloud Databases FAQ de Certificados.
Usando o certificado de propriedade do serviço
- Copie as informações do certificado a partir do painel Terminais ou do campo Base64 das informações de conexão.
- Se necessário, decodifique a sequência Base64 em texto.
- Salve o certificado em um arquivo. (É possível usar o nome de seu próprio arquivo).
- Forneça o caminho do certificado para o driver ou o cliente.

Suporte ao plug-in da CLI para o certificado proprietário do serviço
Você pode exibir o certificado decodificado para sua implantação com o plug-in da CLI com o comando ibmcloud cdb deployment-cacert "example-deployment"
. Ele decodifica o Base64 em texto. Copie e salve a saída do comando
em um arquivo e forneça o caminho do arquivo para o driver.
Outros drivers
O PostgreSQL tem uma vasta matriz de drivers de linguagem. A tabela cobre alguns dos mais comuns.
Idioma | Driver | Exemplos |
---|---|---|
PHP | pgsql |
Link |
Ruby | ruby-pg |
Link |
Ruby no Rails | Rails | Link |
C# | ODBC |
Link |
Acessar | pq |
Link |
Node | node-postgres |
Link |