Crear usuario y asignar privilegios en una base de datos DirectAdmin
Introducción: ¿Por qué es importante gestionar bien los usuarios de MySQL en DirectAdmin?
Cuando tienes una web, ya sea un blog, una tienda online o un proyecto más complejo, detrás de las cámaras siempre hay una base de datos que almacena toda la información importante: productos, clientes, contraseñas, artículos… En un panel de control como DirectAdmin, gestionar esas bases de datos es pan comido, pero hay un paso que mucha gente pasa por alto o hace mal: crear usuarios y asignarles los privilegios adecuados.
Crear un usuario de MySQL exclusivo para cada base de datos no es solo una buena práctica de organización, es una medida de seguridad fundamental. Imagina que tienes dos webs en el mismo hosting y ambas usan el mismo usuario con permisos totales. Si una de ellas es hackeada, el atacante podría acceder a la otra sin ningún problema. Por eso, en este artículo te voy a enseñar, paso a paso y sin tecnicismos, cómo crear usuario mysql DirectAdmin y cómo asignar privilegios mysql DirectAdmin de forma correcta.
Vamos a destripar todo el proceso, desde el panel de control hasta los consejos de seguridad más útiles. Al final, serás capaz de gestionar tus permisos base de datos DirectAdmin como un auténtico profesional, aunque sea la primera vez que te enfrentas a esto.
¿Qué es un usuario de base de datos y por qué no usar el usuario "root"?
Antes de ponernos manos a la obra, vamos a aclarar un concepto básico que a veces lía mucho. En MySQL, un usuario no es lo mismo que una base de datos. La base de datos es el "almacén" donde se guarda la información, y el usuario es la "llave" que permite entrar a ese almacén.
Cuando instalas un CMS como WordPress, el archivo de configuración (wp-config.php) te pide cuatro datos: el nombre de la base de datos, el usuario, la contraseña y el host. Muchas personas, por desconocimiento o pereza, usan el usuario root o un usuario genérico con todos los permisos. Esto es un error garrafal.
El usuario root tiene acceso a todas las bases de datos del servidor. Si un atacante consigue esa contraseña, tiene el control absoluto de todo tu hosting. Por eso, en DirectAdmin (y en cualquier panel moderno), lo correcto es crear un usuario específico para cada base de datos y otorgarle solo los permisos que necesita. Si la web solo necesita leer y escribir (INSERT, SELECT, UPDATE, DELETE), no le des permisos para borrar tablas (DROP) o para cambiar la estructura (ALTER). Menos es más.
Paso a paso: Crear usuario y asignar privilegios en DirectAdmin
Vamos al lío. El proceso en DirectAdmin es bastante visual e intuitivo, pero si es tu primera vez, es normal sentirse un poco perdido. No te preocupes, aquí tienes la guía definitiva.
1. Accede al panel de control de DirectAdmin
Lo primero, lógicamente, es entrar en tu panel de DirectAdmin. Normalmente se accede a través de una URL del tipo https://tudominio.com:2222 o https://tuip:2222. Introduce tu usuario y contraseña (los mismos que usas para gestionar tu hosting) y pulsa en "Iniciar sesión".
Una vez dentro, verás un montón de iconos. Busca la sección que se llama "Administrador de MySQL" o simplemente "MySQL". El nombre puede variar ligeramente según la versión de DirectAdmin, pero suele estar en la columna de la derecha o en la sección de "Cuenta".
2. Crea la base de datos (si no la tienes aún)
En la página de gestión de MySQL, verás un listado con las bases de datos que ya tienes creadas. Si aún no has creado la base de datos, busca el botón que pone "Crear nueva base de datos".
Te pedirá dos campos:
- Nombre de la base de datos: Normalmente, DirectAdmin te antepone el prefijo del usuario (ej:
usuario_miweb). No intentes quitar ese prefijo, es parte del sistema. - Usuario de la base de datos: Aquí puedes poner el nombre del usuario que quieres crear (ej:
usuario_miweb_user). DirectAdmin también te añadirá el prefijo. - Contraseña: Te recomiendo que uses el generador de contraseñas seguras que te ofrece el propio panel. Si no, asegúrate de que tenga al menos 12 caracteres, con mayúsculas, minúsculas, números y símbolos.
Pulsa en "Crear". DirectAdmin hará dos cosas a la vez: creará la base de datos y creará el usuario, pero (y aquí viene lo importante) no le asignará todos los permisos automáticamente. En muchos casos, te asignará todos los privilegios por defecto, pero es mejor que los revises.
3. ¿Qué pasa si ya tengo la base de datos creada?
Si ya tienes la base de datos creada y solo necesitas añadir un usuario nuevo (por ejemplo, para una aplicación externa o para un desarrollador), no necesitas crearla de nuevo. DirectAdmin te permite crear usuarios de forma independiente.
Busca en la misma página de MySQL un botón que ponga "Crear usuario" o ve al final de la lista de bases de datos y verás una opción para "Añadir usuario". Te pedirá el nombre del usuario y la contraseña. Una vez creado, tendrás que asignarlo a la base de datos existente.
4. Asignar los privilegios (el paso clave)
Ahora viene la parte más delicada y la que mucha gente ignora: asignar los privilegios. En la lista de bases de datos, verás que a la derecha de cada una hay una columna que pone "Usuarios" o un icono de llave inglesa. Haz clic en ese icono o en el nombre de la base de datos para entrar en su configuración.
Se abrirá una pantalla donde verás algo como: "Usuarios con acceso a esta base de datos". Verás el usuario que acabas de crear (o el que ya existía). A la derecha, suele haber un enlace o botón que pone "Modificar privilegios" o "Cambiar permisos". Haz clic ahí.
Se desplegará una lista con todos los privilegios posibles de MySQL. Esta lista puede asustar, pero es más sencilla de lo que parece. Aquí tienes los más comunes y qué hace cada uno:
- ALL PRIVILEGES: Es el "todo incluido". Da acceso total a la base de datos, incluido borrarla (DROP). Úsalo solo si sabes lo que haces, y normalmente solo para el usuario principal.
- SELECT: Permite leer datos. Imprescindible para cualquier web.
- INSERT: Permite añadir datos nuevos. También imprescindible.
- UPDATE: Permite modificar datos existentes. Imprescindible.
- DELETE: Permite borrar filas de las tablas. Necesario para muchas apps, pero ten cuidado.
- CREATE: Permite crear nuevas tablas dentro de la base de datos. Útil para instaladores.
- ALTER: Permite modificar la estructura de las tablas (añadir columnas, etc.). Necesario para actualizaciones de software.
- DROP: Permite eliminar tablas o incluso la base de datos entera. Este es el más peligroso.
- INDEX: Permite crear y eliminar índices, lo que acelera las consultas.
- LOCK TABLES: Permite bloquear tablas temporalmente, útil para operaciones de mantenimiento.
¿Qué permisos deberías marcar? Para una web normal (WordPress, PrestaShop, etc.), con marcar SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX es más que suficiente. Deja DROP y GRANT sin marcar. De hecho, mi recomendación es que solo marques SELECT, INSERT, UPDATE y DELETE para el usuario principal de la web y, si la aplicación te da errores al instalar o actualizar, entonces vas añadiendo los demás poco a poco.
Una vez hayas marcado las casillas, pulsa en "Guardar" o "Guardar cambios". DirectAdmin aplicará los cambios al instante.
Gestionando múltiples usuarios y bases de datos
A medida que tu proyecto crece, es posible que necesites más de una base de datos o más de un usuario. Por ejemplo, puedes tener una base de datos para tu web principal y otra para un foro o un blog secundario.
La buena noticia es que DirectAdmin te permite asignar un mismo usuario a varias bases de datos. Si tienes un usuario llamado usuario_admin y quieres que tenga acceso a dos bases de datos distintas, solo tienes que ir a la configuración de la segunda base de datos y "Añadir usuario" existente, seleccionando usuario_admin de la lista desplegable. Luego, le asignas los privilegios que quieras para esa base de datos en concreto.
Esto es muy útil para centralizar la gestión, pero recuerda: si el usuario tiene permisos en dos bases de datos y una es comprometida, la otra también está en riesgo. Por eso, es mejor crear usuarios separados para proyectos que no tengan relación entre sí.
Errores comunes y cómo solucionarlos
Aquí te dejo una pequeña FAQ con los problemas más habituales al gestionar DirectAdmin mysql usuarios:
"Access denied for user 'usuario'@'localhost'"
Este es el error más típico. Significa que el usuario no tiene permisos para conectarse a la base de datos. Las causas suelen ser:
- La contraseña es incorrecta: Revisa que la has copiado bien, sin espacios.
- El usuario no está asignado a esa base de datos: Ve a la configuración de la base de datos y asegúrate de que el usuario está en la lista.
- Los privilegios no se han guardado: Vuelve a entrar en la pantalla de privilegios y pulsa "Guardar".
"Table 'xxxx' doesn't exist"
Este error suele aparecer al instalar un CMS. Normalmente significa que el usuario no tiene permisos CREATE o ALTER. Ve a los privilegios de ese usuario y añade CREATE y ALTER. Si sigue fallando, añade INDEX y DROP (solo temporalmente para la instalación, luego puedes quitarlos).
No puedo conectarme desde un programa externo (ej: MySQL Workbench)
Por defecto, los usuarios de MySQL en hosting compartido solo pueden conectarse desde localhost. Esto es una medida de seguridad. Si necesitas acceso remoto, tendrías que usar la IP del servidor o configurar un túnel SSH, pero eso ya es más avanzado y no es recomendable en un entorno de producción.
Consejos de seguridad extra para tus bases de datos
Aparte de gestionar bien los privilegios, aquí tienes otros consejos que te pueden salvar de un buen susto:
- Cambia las contraseñas periódicamente: DirectAdmin te permite cambiar la contraseña de un usuario de MySQL en cualquier momento. Hazlo al menos cada 3 meses.
- No uses la misma contraseña para todo: Es tentador, pero si la web es hackeada, el atacante probará esa contraseña en tu correo, en tu FTP, etc.
- Elimina los usuarios que no uses: Si tienes usuarios antiguos que ya no corresponden a ninguna base de datos, bórralos. Menos superficie de ataque.
- Haz copias de seguridad: DirectAdmin tiene una herramienta de backup integrada. Úsala, no sabes cuándo la vas a necesitar.
¿Y si uso Syspanel (antes HestiaCP)?
Si tu hosting usa Syspanel (el antiguo HestiaCP, que ahora se llama así y se accede por el puerto 2106), el proceso es bastante similar, pero con algunas diferencias visuales. En Syspanel, la gestión de bases de datos está en la pestaña de "Base de datos" del panel. Podrás crear la base de datos y el usuario a la vez, pero la asignación de privilegios suele ser más limitada (normalmente te da la opción de "todos" o "solo lectura"). Si necesitas permisos más granulares en Syspanel, tendrás que usar phpMyAdmin, que suele estar accesible desde el propio panel.
Conclusión: Domina tus privilegios, domina tu seguridad
Gestionar permisos base de datos DirectAdmin no es una tarea de otro mundo, pero requiere un poco de atención. La clave está en entender que menos privilegios es más seguridad. No tengas miedo a experimentar: si una aplicación te da un error, siempre puedes volver a la pantalla de privilegios y añadir el permiso que falte.
Recuerda la regla de oro: nunca uses el usuario root para tus aplicaciones web. Crea un usuario específico para cada base de datos, asígnale solo lo necesario y guarda las contraseñas en un gestor de contraseñas. Con estos hábitos, tu hosting estará mucho más blindado y dormirás más tranquilo.
Espero que esta guía te haya sido de ayuda. Si tienes alguna duda, déjala en los comentarios y estaré encantado de ayudarte. ¡Nos vemos en el siguiente artículo!
