Cuando instalas el servicio de base de datos MySQL, crea una cuenta raíz automáticamente. Puedes utilizarla para realizar cualquier acción y acceder a cualquier dato. ¡Esto puede ser una pesadilla de seguridad!

Para mantener la seguridad de tu sitio, es conveniente configurar cuentas adicionales que no tengan estos privilegios elevados. Afortunadamente, hay varias formas de crear nuevos usuarios en MySQL.

En este post, exploraremos todas las razones por las que puedes querer añadir más usuarios a tu base de datos MySQL. A continuación, te mostraremos cómo crear estas cuentas y gestionar los permisos para obtener la máxima seguridad. ¡Empecemos!

Una introducción a MySQL (y por qué puedes querer añadir nuevos usuarios)

La distribución oficial de WordPress es compatible con los motores de bases de datos MySQL y MariaDB. Si has sopesado los pros y los contras, es posible que hayas optado por la última versión del software de gestión de bases de datos MySQL. En algún momento, es posible que quieras crear usuarios adicionales.

En MySQL, cada cuenta consta de un nombre de usuario y una contraseña. También especifica el host o los hosts cliente donde el usuario puede conectarse a tu servidor MySQL.

Normalmente crearás cuentas adicionales cuando más personas necesiten acceder a tu base de datos. Aunque varias personas pueden interactuar con MySQL desde la misma cuenta, compartir las credenciales de acceso es un riesgo para la seguridad. Si detectas algún error o actividad sospechosa en tu base de datos, una cuenta compartida también dificultará la identificación del culpable.

MySQL es un sistema basado en permisos. Te permite controlar exactamente a qué información tiene acceso cada usuario y las acciones que puede realizar. Crear varias cuentas con diferentes permisos es mucho más seguro que confiar en una sola cuenta con acceso global.

Cuando instalas MySQL, se crea automáticamente una única cuenta de superusuario ‘root’@’localhost’. Incluso si gestionas la base de datos en solitario, es conveniente crear al menos una cuenta adicional. Al hacerlo, te aseguras de que no perderás el acceso a toda la base de datos sólo porque te encuentres con un problema con ‘root’@’localhost’

Esta cuenta de root también tiene permiso para acceder a todos tus datos y realizar cualquier acción. Incluso los usuarios experimentados de bases de datos pueden causar graves daños con este nivel de control. Por esta razón, es posible que quieras crear una cuenta de usuario normal que puedas utilizar para la administración diaria de MySQL. Luego puedes reservar ‘root’@’localhost’ para las tareas que requieran privilegios elevados.

Instalar el servicio de base de datos MySQL puede ser una pesadilla de seguridad 😱... pero con esta guía, puedes mantener tu sitio a salvo. ⬇Click to Tweet

¿Cómo gestionar tu base de datos MySQL?

Cuando se trata de gestionar tu base de datos MySQL, tienes dos opciones. Puedes utilizar MySQL Shell, que es una interfaz Python, Javascript o SQL y un componente del servidor MySQL. Esta herramienta está disponible en Microsoft Windows, Linux y macOS para plataformas de 64 bits.

También puedes utilizar la herramienta gratuita phpMyAdmin. Echemos un vistazo a estas dos opciones.

1. Gestionar tu base de datos desde MySQL Shell

Para entrar en el intérprete de comandos de MySQL, abre un Terminal o un Símbolo del sistema. A continuación, puedes ejecutar el siguiente comando:

> mysqlsh

Esto abre la Shell de MySQL sin conectarse a un servidor. Por defecto, MySQL Shell se inicia en modo JavaScript, pero puedes cambiar de modo utilizando el comando sql, py o js:

Abrir el Shell de MySQL
Abrir el Shell de MySQL

En la Shell de MySQL, las conexiones a las instancias del Servidor MySQL se gestionan mediante un objeto de sesión. Si el Protocolo X está disponible, entonces puedes utilizar un objeto de sesión. Ten en cuenta que el Protocolo X requiere el Plugin X.

El Plugin X escucha el puerto especificado por mysqlx_port, que por defecto es el 33060. Puedes crear un objeto Sesión utilizando lo siguiente:

–mysqlx (–mx)

Por ejemplo, puedes establecer una conexión de Protocolo X con una instancia local del Servidor MySQL que escucha en el puerto 33060, utilizando lo siguiente

shell> mysqlsh –mysqlx -u user -h localhost -P 33060

Si el Protocolo X no está disponible, puedes utilizar un objeto ClassicSession. Este objeto está pensado para ejecutar SQL contra servidores que utilizan el protocolo clásico de MySQL. Para crear un objeto ClassicSession, escribe

–mysql (–mc)

Puedes verificar los resultados de tu intento de conexión utilizando el comando de estado de MySQL Shell o el método shell.status(). Por ejemplo:

mysql-js []> shell.status()

Para asignar privilegios a través de MySQL Shell, tendrás que ejecutar tus comandos como usuario root. Para ello, introduce lo siguiente y luego proporciona tu contraseña de usuario root de MySQL cuando se te pida:

mysql -u root -p

Aquí, la -u indica que el siguiente parámetro es un nombre de usuario, que en este caso es root. En lugar de mostrar la contraseña en texto plano, utilizamos -p. Esto especifica que no se proporciona la contraseña y que tendrás que introducirla cuando se te pida. El uso de estos parámetros puede ayudar a mantener la seguridad de tu cuenta de root.

2. Gestionar tu base de datos desde phpMyAdmin

Si prefieres utilizar una interfaz gráfica de usuario (GUI), también puedes gestionar la base de datos MySQL a través de phpMyAdmin. Esta interfaz te permite crear nuevas cuentas, ver y editar los permisos, y eliminar las cuentas que ya no necesites. Necesitarás estar conectado como root para realizar estas acciones.

A pesar de esto, cabe destacar que phpMyAdmin no se encarga de la gestión de usuarios. Entre bastidores, simplemente pasa el nombre de usuario y la contraseña a MySQL. La base de datos determina entonces si este usuario puede acceder a los datos especificados o realizar una acción concreta.

Puedes descargar esta herramienta de forma gratuita desde el sitio web de phpMyAdmin. O bien, si eres cliente de Kinsta, proporcionamos un fácil acceso a phpMyAdmin como parte de nuestros planes de alojamiento.

Para acceder a phpMyAdmin, entra en tu panel de control de MyKinsta. En el menú de la izquierda, selecciona Sitios.

Selecciona "Sitios" en el panel de control de MyKinsta
Selecciona «Sitios» en el panel de control de MyKinsta

A continuación, elige el sitio en el que quieres editar tu base de datos MySQL. En la pantalla siguiente, desplázate hasta la sección de acceso a la base de datos.

Encuentra la sección Acceso a la base de datos
Encuentra la sección Acceso a la base de datos

En Acceso a la base de datos, encontrarás el nombre de tu base de datos, el nombre de usuario y la contraseña. A continuación, puedes hacer clic en Abrir phpMyAdmin, que lanza esta herramienta en una nueva pestaña. Cuando se te pida, introduce el nombre de usuario y la contraseña de la sección de acceso a la base de datos de MyKinsta.

Introduce el nombre de usuario y la contraseña
Introduce el nombre de usuario y la contraseña

Ahora, entra en tu cuenta de phpMyAdmin y selecciona el enlace Usuarios. Desde ahí, podrás gestionar todas tus cuentas de usuario de MySQL.

¿Cómo crear y gestionar un usuario de MySQL? (4 procesos clave)

Una vez que estés conectado a tu base de datos, puedes realizar muchas acciones diferentes. Aquí tienes cuatro formas clave de gestionar tus cuentas de usuario MySQL.

1. Crear un nuevo usuario en el servidor de la base de datos

En phpMyAdmin, puedes crear una cuenta utilizando el enlace Añadir un nuevo usuario. A continuación, puedes utilizar los campos de texto y los desplegables para configurar esta cuenta:

En este punto, tienes la opción de asignar privilegios globales. Esto concede al usuario acceso ilimitado a todas tus bases de datos y tablas. Puede ser un riesgo para la seguridad, por lo que sólo debes dar estos privilegios elevados cuando sean necesarios. Puedes asignar privilegios específicos de la base de datos después de crear esta cuenta.

Para crear una nueva cuenta a través del shell de MySQL, introduce el comando CREATE USER. También tendrás que proporcionar un nombre de usuario y el nombre de host. Este último es el nombre del host desde el que el usuario se conecta al Servidor MySQL:

CREATE USER ‘exampleuser’@’localhost’ IDENTIFIED BY ‘password’;

Cuando escribas este comando, asegúrate de sustituir exampleuser y password por los valores que quieras asignar a esta cuenta. El usuario siempre puede cambiar su contraseña de MySQL más adelante.

En el ejemplo anterior, estamos estableciendo el nombre de host como «localhost». Por tanto, el usuario sólo podrá conectarse al servidor MySQL desde el sistema en el que se esté ejecutando el servidor MySQL.

Es posible que quieras sustituir la palabra «localhost » por la dirección de tu servidor. Por ejemplo, si este usuario necesita acceder a MySQL desde una máquina con la dirección del Protocolo de Internet (IP) 11.0.0.0, entonces ejecutarías lo siguiente

CREATE USER ‘newuser’@’11.0.0.0’ IDENTIFIED BY ‘user_password’;

Si quieres crear un usuario que pueda conectarse desde cualquier host, puedes incluir el comodín % en tu comando. Por ejemplo:

CREATE USER ‘newuser’@’%’ IDENTIFIED BY ‘user_password’;

También puedes omitir el valor del nombre de host por completo. Esto tendrá el mismo resultado.

2. Asignar permisos a MySQL a través de phpMyAdmin

Por defecto, un nuevo usuario de MySQL no tiene permiso para realizar ninguna acción. Incluso si entra en su cuenta, no podrá crear ninguna tabla ni seleccionar ningún dato.

Todos los planes de alojamiento de Kinsta incluyen soporte 24/7 de nuestros veteranos desarrolladores e ingenieros de WordPress. Chatea con el mismo equipo que respalda a nuestros clientes de Fortune 500. ¡Consulta nuestros planes!

Después de crear un nuevo usuario, normalmente querrás empezar a asignarle algunos permisos. Para mantener la seguridad de tu base de datos, es una buena idea dar a cada usuario los privilegios mínimos necesarios para realizar su trabajo. También es conveniente revisar regularmente sus permisos y revocar los que sean innecesarios.

Los clientes de Kinsta pueden editar los privilegios de un usuario desde el panel de Usuarios de phpMyAdmin.

Tablero de usuarios de phpMyAdmin
Panel de usuarios de phpMyAdmin

Allí, busca la cuenta que quieres modificar y haz clic en el icono del lápiz que hay junto a ella. Ahora puedes editar todos los permisos a los que tiene acceso este usuario.

Conceder acceso sin restricciones puede parecer la opción más fácil, pero puede poner en riesgo tu base de datos. A menos que tengas una razón específica, normalmente querrás evitar dar a alguien rienda suelta a toda tu base de datos.

3. Modificar los permisos de usuario desde el shell de MySQL

Si utilizas el Shell de MySQL, puedes ver todos los privilegios concedidos a una cuenta concreta con el comando SHOW GRANTS. Tendrás que sustituir «username» y «localhost» por la información de la cuenta que quieras revisar:

SHOW GRANTS FOR ‘username’@’localhost’;

Cuando crees una cuenta, esta lista estará vacía. Puedes empezar a asignar accesos a diferentes partes de tu base de datos utilizando el comando GRANT:

GRANT type_of_permission ON database_name.table_name TO ‘username’@’localhost’;

En este comando, estamos especificando los privilegios que estamos asignando, seguidos de la base de datos y las tablas a las que se deben aplicar estos cambios. Por último, estamos proporcionando el nombre de usuario y el servidor que recibirá los privilegios nombrados. Encontrarás una lista completa de todos los privilegios disponibles en la documentación oficial de MySQL.

Documentación de MySQL
Documentación de MySQL

Si quieres conceder acceso a cualquier base de datos o tabla, puedes utilizar un asterisco (*) en lugar del nombre de la base de datos o de la tabla. Por ejemplo:

GRANT ALL PRIVILEGES ON *. * TO ‘exampleuser’@’localhost’;

Aquí, estamos concediendo a exampleuser permiso para leer, editar, ejecutar y realizar todas las tareas en todas las bases de datos y tablas. Normalmente querrás reservar estos privilegios elevados para los administradores.

A veces, puede que necesites quitar un permiso. Por ejemplo, puede que hayas concedido un privilegio por error, o que el usuario ya no lo necesite. Para revocar el acceso, ejecuta lo siguiente:

REVOKE type_of_permission ON database_name.table_name FROM ‘username’@’localhost’;

Si asignas privilegios con el comando GRANT, MySQL debería notar estos cambios y aplicarlos automáticamente. Sin embargo, sigue siendo inteligente refrescar los privilegios de un usuario ejecutando el comando FLUSH PRIVILEGES;.

4. Eliminar un usuario de MySQL

A veces, puedes necesitar eliminar un usuario de tu base de datos MySQL. Por ejemplo, puede que esta persona abandone tu organización, o que se traslade a otro departamento. También es posible que quieras limitar el número de personas que pueden acceder a tu base de datos, para aumentar tu seguridad.

Si trabajas con MySQL Shell, puedes eliminar una cuenta mediante la sentencia DROP USER. Este comando también eliminará todos sus privilegios:

DROP USER ‘username’@’localhost’;

Alternativamente, si eres cliente de MyKinsta, puedes eliminar usuarios fácilmente desde la página de Usuarios de phpMyAdmim. En esta pantalla, busca a la persona que quieres eliminar. A continuación, puedes seleccionar la casilla correspondiente y elegir si quieres eliminar también cualquier base de datos con el mismo nombre:

Cuando estés satisfecho de proceder, haz clic en Ir. Esta persona será ahora eliminada de MySQL.

¿Listo para añadir un nuevo usuario a tu base de datos MySQL? 💪 Aprende a crear cuentas y a gestionarlas para obtener la máxima seguridad aquí mismo 🔒Click to Tweet

Resumen

MySQL crea automáticamente una cuenta de superusuario ‘root’@’localhost’, pero nunca es buena idea usarla para todo. Si creas varios usuarios de MySQL, puedes asignar diferentes privilegios para mantener tus datos a salvo.

Además, puedes asegurarte de no perder el acceso a tu base de datos porque tengas problemas con ‘root’@’localhost’.

Como propietario de un sitio web, tu base de datos suele ser tu activo más valioso. En Kinsta, nuestro equipo de expertos en WordPress puede ayudarte a mantener tu base de datos en plena forma.

Todos nuestros planes de alojamiento incluyen soporte técnico las 24 horas del día. Al asociarte con Kinsta, siempre tendrás a tu disposición a veteranos de WordPress para ayudarte a resolver cualquier problema con tu base de datos MySQL.


Ahorra tiempo, costes y maximiza el rendimiento del sitio con:

  • Ayuda instantánea de expertos en alojamiento de WordPress, 24/7.
  • Integración de Cloudflare Enterprise.
  • Alcance de audiencia global con 34 centros de datos en todo el mundo.
  • Optimización con nuestra herramienta de monitoreo de rendimiento de aplicación integrada.

Todo esto y mucho más, en un plan sin contratos a largo plazo, migraciones asistidas y una garantía de devolución del dinero de 30 días. Conozca nuestros planes o habla con el departamento de ventas para encontrar el plan más adecuado para ti.