Skip to main content

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

ParameterValue
Host{name}.db.foundrydb.com
Port5432
TLSRequired (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

ParameterValue
Host{name}.db.foundrydb.com
Port3306
TLSRequired
# 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

ParameterValue
Host{name}.db.foundrydb.com
Port27017
TLSRequired
# 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

ParameterValue
Host{name}.db.foundrydb.com
Port TLS6380
Port non-TLS6379 (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

ParameterValue
Bootstrap{name}.db.foundrydb.com:9093
SecuritySASL_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

ParameterValue
Host{name}.db.foundrydb.com
Port9200
AuthHTTP Basic
TLSRequired
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,
)