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.
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_URLtal cual (ya incluyesslrootcert), sin cambiarsslmode.