Connection Strings
Every service gets a public DNS hostname once it reaches running status. Fetch it via:
curl -u admin:password https://api.foundrydb.com/managed-services/{id} \
| jq '.dns_records[0].full_domain'
PostgreSQL
| Parameter | Value |
|---|---|
| Host | {name}.db.foundrydb.com |
| Port | 5432 |
| TLS | Required (sslmode=verify-full) |
# psql
PGPASSWORD=pass psql "host=HOST port=5432 user=USER dbname=defaultdb sslmode=verify-full"
# URI
postgresql://USER:PASS@HOST:5432/defaultdb?sslmode=verify-full
# PgBouncer (if enabled)
postgresql://USER:PASS@HOST:5433/defaultdb?sslmode=verify-full
Node.js (pg)
import { Pool } from 'pg';
const pool = new Pool({ connectionString: 'postgresql://USER:PASS@HOST/defaultdb?sslmode=verify-full' });
Python (psycopg2)
import psycopg2
conn = psycopg2.connect("host=HOST user=USER password=PASS dbname=defaultdb sslmode=verify-full")
Go (pgx)
conn, err := pgx.Connect(ctx, "postgres://USER:PASS@HOST/defaultdb?sslmode=verify-full")
MySQL
| Parameter | Value |
|---|---|
| Host | {name}.db.foundrydb.com |
| Port | 3306 |
| TLS | Required |
# CLI
mysql -h HOST -u USER -pPASS defaultdb --ssl-mode=REQUIRED
# URI
mysql://USER:PASS@HOST:3306/defaultdb?ssl=true
Node.js (mysql2)
import mysql from 'mysql2/promise';
const conn = await mysql.createConnection({
host: 'HOST', user: 'USER', password: 'PASS', database: 'defaultdb', ssl: {},
});
Python (PyMySQL)
import pymysql
conn = pymysql.connect(host='HOST', user='USER', password='PASS', database='defaultdb', ssl={'ca': None})
MongoDB
| Parameter | Value |
|---|---|
| Host | {name}.db.foundrydb.com |
| Port | 27017 |
| TLS | Required |
# mongosh
mongosh "mongodb://USER:PASS@HOST:27017/defaultdb?tls=true"
# URI
mongodb://USER:PASS@HOST:27017/defaultdb?tls=true&tlsAllowInvalidCertificates=false
Node.js (mongoose)
import mongoose from 'mongoose';
await mongoose.connect('mongodb://USER:PASS@HOST:27017/defaultdb?tls=true');
Python (pymongo)
from pymongo import MongoClient
client = MongoClient('mongodb://USER:PASS@HOST:27017/defaultdb?tls=true')
Valkey
| Parameter | Value |
|---|---|
| Host | {name}.db.foundrydb.com |
| Port TLS | 6380 |
| Port non-TLS | 6379 (restrict via allowed_cidrs) |
# redis-cli (TLS)
redis-cli -h HOST -p 6380 --tls --user USER --pass PASS
# URI
rediss://USER:PASS@HOST:6380
Node.js (ioredis)
import Redis from 'ioredis';
const redis = new Redis({ host: 'HOST', port: 6380, username: 'USER', password: 'PASS', tls: {} });
Python (redis-py)
import redis
r = redis.Redis(host='HOST', port=6380, username='USER', password='PASS', ssl=True)
Go (go-redis)
rdb := redis.NewClient(&redis.Options{
Addr: "HOST:6380", Username: "USER", Password: "PASS",
TLSConfig: &tls.Config{},
})
Kafka
| Parameter | Value |
|---|---|
| Bootstrap | {name}.db.foundrydb.com:9093 |
| Security | SASL_SSL / SCRAM-SHA-256 |
Java / Spring
spring.kafka.bootstrap-servers=HOST:9093
spring.kafka.security.protocol=SASL_SSL
spring.kafka.properties.sasl.mechanism=SCRAM-SHA-256
spring.kafka.properties.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="USER" password="PASS";
Python (kafka-python)
from kafka import KafkaProducer
producer = KafkaProducer(
bootstrap_servers='HOST:9093',
security_protocol='SASL_SSL',
sasl_mechanism='SCRAM-SHA-256',
sasl_plain_username='USER',
sasl_plain_password='PASS',
)
Node.js (kafkajs)
import { Kafka } from 'kafkajs';
const kafka = new Kafka({
brokers: ['HOST:9093'],
ssl: true,
sasl: { mechanism: 'scram-sha-256', username: 'USER', password: 'PASS' },
});
OpenSearch
| Parameter | Value |
|---|---|
| Host | {name}.db.foundrydb.com |
| Port | 9200 |
| Auth | HTTP Basic |
| TLS | Required |
curl -u USER:PASS https://HOST:9200/_cluster/health
Python (opensearch-py)
from opensearchpy import OpenSearch
client = OpenSearch(
hosts=[{'host': 'HOST', 'port': 9200}],
http_auth=('USER', 'PASS'),
use_ssl=True,
)