Conectar tu aplicación

Con mongosh y con el driver oficial de MongoDB de tu lenguaje te conectas a TeselaDB.

Conecta mongosh o tu aplicación a TeselaDB con el driver oficial de MongoDB de tu lenguaje. TeselaDB se presenta a los drivers como un mongos de MongoDB, así que el driver se conecta sin cambios.

Requisitos

  • La dirección de un nodo del clúster.
  • Un usuario y su contraseña. Al empezar puedes usar root, cuya contraseña está en root-credentials.txt.
  • El fichero pki/ca.pem del clúster, porque el puerto de clientes siempre exige TLS.

La cadena de conexión

mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pem
  • tls=true activa TLS. Sin él, el nodo rechaza la conexión.
  • tlsCAFile apunta a pki/ca.pem del directorio de datos del primer nodo. Copia ese fichero a las máquinas de tus aplicaciones; no es secreto.
  • La contraseña de root está en root-credentials.txt. Para tus aplicaciones, crea un usuario propio con solo los roles que necesitan (ver Usuarios y roles).

mongosh

Shell
mongosh "mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pem"

Desde tu lenguaje

Todos los drivers oficiales aceptan la misma cadena de conexión. Estos son cuatro ejemplos; el resto de drivers (C#, Rust, PHP, Ruby, Kotlin, Swift, C y C++) funcionan igual.

Node.js

JavaScript
import { MongoClient } from "mongodb";

const client = new MongoClient("mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pem");
await client.connect();
await client.db("shop").collection("orders").insertOne({ total: 149.5 });

Python

Python
from pymongo import MongoClient

client = MongoClient(
    "mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pem"
)
client.shop.orders.insert_one({"total": 149.5})

Go

Go
client, err := mongo.Connect(options.Client().ApplyURI(
    "mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true&tlsCAFile=./data/pki/ca.pem",
))
if err != nil {
    panic(err)
}
_, err = client.Database("shop").Collection("orders").InsertOne(ctx, bson.M{"total": 149.5})

Java

Java
try (MongoClient client = MongoClients.create(
        "mongodb://root:<contraseña>@127.0.0.1:27017/?tls=true")) {
    client.getDatabase("shop").getCollection("orders").insertOne(new Document("total", 149.5));
}

En Java la CA va en un almacén de confianza y no en la cadena. Los pasos están en Java.

Varios nodos en la cadena

Cualquier nodo enruta cada petición al rango que toca, así que basta con uno. Pon dos o tres en la cadena para que el driver tenga otro al que ir si uno no responde:

mongodb://node-01:27017,node-02:27017,node-03:27017/?tls=true&tlsCAFile=./ca.pem

Comprobar

En mongosh, un ping al nodo devuelve { ok: 1 } cuando la conexión y el usuario son correctos:

JavaScript
db.runCommand({ ping: 1 });

Problemas frecuentes

  • Si la conexión se cierra antes de autenticar, falta tls=true en la cadena. El nodo rechaza las conexiones sin TLS.
  • Si el driver no confía en el certificado del nodo, tlsCAFile no apunta al pki/ca.pem de este clúster. Cada clúster tiene su propia autoridad de certificación.
  • Si la autenticación falla, revisa en la cadena el usuario, su contraseña y la base de autenticación (authSource).

Ver también