Dilohost Docs

Bases de datos PostgreSQL y MySQL

Crea bases de datos PostgreSQL o MySQL para tus apps y conéctalas sin que nadie vea la contraseña. Cada base tiene su propio usuario y conexión cifrada.

Actualizado el 11 de octubre de 2026 Ver en Markdown

Dilohost crea bases de datos PostgreSQL y MySQL para las apps de tus proyectos. Cada base tiene su propio usuario, solo se puede usar desde las apps de tu cuenta y se conecta con cifrado verificado. Tú no copias contraseñas: le pides a tu agente que conecte la base a la app y la app recibe las variables que necesita.

Antes de empezar

  • Necesitas un plan que incluya bases de datos. El plan Gratis y el Autónomo no las incluyen; consulta cuántas bases y cuánto espacio trae cada plan en Planes y precios.
  • La base pertenece a un proyecto. Si aún no tienes uno, el agente lo crea antes (ver Conceptos básicos).

Crear una base de datos

Crea una base de datos PostgreSQL llamada datos en el proyecto tienda.

El agente usa database.create. Puedes elegir el motor:

Motor Valor de engine Cuándo elegirlo
PostgreSQL postgres (por defecto) La opción recomendada para casi todo: Laravel, Django, Rails, Node con Prisma o Drizzle…
MySQL mysql Si tu app ya está hecha para MySQL (por ejemplo, algunos WordPress o proyectos PHP antiguos).

El nombre de la base son de 1 a 20 letras minúsculas y números, sin guiones (por ejemplo datos o db). Si no dices ninguno, se llama db. La respuesta incluye el tamaño máximo que te permite el plan.

Conectarla a una app

Conecta la base datos a la app web del proyecto tienda.

Con database.connection e inject_into la conexión se guarda como variables secretas de la app y la app se reinicia para leerlas. La contraseña no aparece en la conversación en ningún momento.

Variables que recibe la app:

Variable PostgreSQL MySQL
DATABASE_URL postgresql://usuario:…@host:puerto/base?sslmode=verify-full&sslrootcert=… mysql://usuario:…@host:puerto/base
DB_CONNECTION pgsql mysql
DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD Datos de la conexión Datos de la conexión
DB_SSLMODE, PGSSLMODE verify-full —
PGSSLROOTCERT, DB_SSLROOTCERT Ruta del certificado de la autoridad —
MYSQL_ATTR_SSL_CA, DB_SSL_CA — Ruta del certificado de la autoridad

Con esto funcionan sin tocar nada Laravel (lee DB_* y MYSQL_ATTR_SSL_CA), node-postgres y Prisma (leen DATABASE_URL) y cualquier cliente basado en libpq, como psycopg en Python (lee PGSSL*).

Consejo

Si tu app tiene migraciones, pídele al agente que las lance después de conectar la base: «ejecuta las migraciones de la app web». Lo hace con app.run (ver Diagnóstico y comandos).

Si llamas a database.connection sin inject_into, el agente recibe el motor, el servidor, el puerto, la base y el usuario, pero nunca la contraseña.

Conexión cifrada

Todas las conexiones a las bases van cifradas y verifican el certificado del servidor (verify-full en PostgreSQL; en MySQL los usuarios exigen TLS). Una conexión sin cifrar se rechaza antes de pedir la contraseña. La app no tiene que configurar nada: el certificado de la autoridad está montado en todas las apps y las variables de arriba ya apuntan a él.

Quién puede entrar

  • Cada base tiene un usuario propio que solo ve esa base. Las bases de otras cuentas, y las otras bases de tu cuenta, no son accesibles con ese usuario.
  • La base solo se alcanza desde las apps de tu cuenta. No está publicada en Internet, así que no puedes conectarte desde tu ordenador con un cliente de escritorio.
  • Para trabajar con los datos desde fuera, descarga una copia (ver Copias de seguridad) o ejecuta comandos de la app con app.run.

Tamaño y límites

database.list enseña cada base con su motor, su estado y lo que ocupa, junto con el límite del plan.

Situación Qué pasa
Llegas al 80 % del espacio del plan Te avisamos (como mucho una vez al día).
Pasas del 110 % Se corta el acceso a la base: la app deja de poder conectarse, pero no se borra nada.
Liberas espacio o subes de plan El acceso vuelve solo.

Borrar una base

Borra la base de datos pruebas del proyecto tienda.

database.delete pide confirmación y es irreversible: se borran la base y todas sus copias, y las apps que la usen empezarán a fallar. Si quieres conservar los datos, descarga antes una copia con backup.download_link.

Problemas frecuentes

  • «Tu plan no incluye bases de datos»: el plan Gratis y el Autónomo no tienen. Mira Planes y precios.
  • La app no conecta después de crear la base: falta conectarla con inject_into; crearla no le da las variables a ninguna app.
  • Error de certificado en una app Node: usa DATABASE_URL tal cual (ya incluye sslrootcert), sin cambiar sslmode.

Relacionado