Cómo crear un usuario MySQL y otorgar privilegios

¿Quieres entender los conceptos básicos de las operaciones de MySQL? Sigue leyendo, ya que este artículo te mostrará cómo crear un usuario en MySQL. También aprenderás sobre varios comandos para otorgar privilegios, revocarlos y eliminar usuarios existentes.

¿Qué es una base de datos MySQL?

Para entender MySQL, necesitarás saber qué es una base de datos. Es un almacenamiento virtual donde puedes guardar los datos necesarios para crear sitios web y aplicaciones web.

La base de datos MySQL puede almacenar detalles de la cuenta de usuario, como nombres de usuario, contraseñas, direcciones de correo electrónico y cualquier tipo de información que desees conservar para su uso posterior.

Sin embargo, los datos almacenados deben estar en algún tipo de orden. Por eso tenemos sistemas de gestión de bases de datos. Estas herramientas se utilizan para comunicarse con la base de datos y permiten a los desarrolladores estructurar, almacenar, volcar y modificar los datos.

Requisitos previos para crear un nuevo usuario en MySQL

Antes de continuar con la siguiente sección del tutorial, asegúrate de haber instalado MySQL. Si no lo has hecho, aprende cómo instalarlo en Ubuntu y CentOS fácilmente.

Consejo profesional

Utilizaremos la línea de comandos para acceder a nuestro VPS Linux como root. Puedes utilizar PuTTY (Windows) o tu terminal (macOS, Linux) e iniciar sesión utilizando tus datos de acceso root SSH proporcionados por tu proveedor de alojamiento.

Cómo crear una cuenta de usuario MySQL y otorgar todos los privilegios

Justo cuando empieces a usar MySQL, recibirás un nombre de usuario y una contraseña. Estas credenciales iniciales te otorgarán acceso root o control total de todas tus bases de datos y tablas.

Sin embargo, hay ocasiones en las que deberás otorgar acceso a la base de datos a otra persona sin otorgarle el control total.

Por ejemplo, si tienes que contratar desarrolladores para hacer mantenimiento a tus bases de datos, pero no deseas darles la capacidad de eliminar o modificar cualquier información confidencial.

En ese caso, debes darles las credenciales de un usuario que no sea root. De esta manera, puedes realizar un seguimiento de lo que los desarrolladores pueden y no pueden hacer con tus datos.

En esta parte, explicaremos cómo crear una cuenta de usuario en MySQL y otorgar todos los privilegios de tu base de datos. En un sentido práctico, no es aconsejable dar el control total a un usuario no root. Sin embargo, sigue siendo un buen punto de entrada para conocer los privilegios del usuario.

Para crear una nueva cuenta de usuario en MySQL, sigue estos pasos:

  1. Accede a la línea de comando e ingresa al servidor MySQL:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysql
mysql
mysql
  1. El script devolverá el siguiente resultado, que confirma que estás accediendo a un servidor MySQL.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysql>
mysql>
mysql>
  1. Luego, ejecuta el siguiente comando:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CREATE USER 'nuevo_usuario'@'localhost' IDENTIFIED BY 'contraseña';
CREATE USER 'nuevo_usuario'@'localhost' IDENTIFIED BY 'contraseña';
CREATE USER 'nuevo_usuario'@'localhost' IDENTIFIED BY 'contraseña';
  1. nuevo_usuario es el nombre que le hemos asignado a nuestra nueva cuenta de usuario y la sección IDENTIFIED BY “contraseña” establece un código de acceso para este usuario. Puedes reemplazar estos valores con los tuyos, dentro de las comillas.
  2. Para otorgar todos los privilegios de la base de datos a un usuario recién creado, ejecuta el siguiente comando:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
GRANT ALL PRIVILEGES ON * . * TO 'nuevo_usuario'@'localhost';
GRANT ALL PRIVILEGES ON * . * TO 'nuevo_usuario'@'localhost';
GRANT ALL PRIVILEGES ON * . * TO 'nuevo_usuario'@'localhost';
  1. Para que los cambios tengan efecto inmediatamente, elimina estos privilegios escribiendo el comando:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
FLUSH PRIVILEGES;
FLUSH PRIVILEGES;
FLUSH PRIVILEGES;

Una vez hecho esto, tu nueva cuenta de usuario tendrá el mismo acceso a la base de datos que el usuario root.

Cómo conceder privilegios por separado para un usuario de MySQL

En esta parte, explicaremos cómo conceder privilegios por separado para una cuenta de usuario en MySQL.

Recuerda especificar el nombre de la base de datos y el nombre de la tabla y separarlos con un . (punto) y sin espacios. Esto le dará al usuario root un control detallado sobre ciertos datos.

Además, sustituye el valor PERMISSION_TYPE por el tipo de acceso que quieras conceder a tu nueva cuenta de usuario.

Estos son los comandos más utilizados en MySQL:

  • CREATE: permite a los usuarios crear una base de datos o una tabla
  • SELECT: permite a los usuarios recuperar datos
  • INSERT: permite a los usuarios agregar nuevas entradas en las tablas
  • UPDATE: permite a los usuarios modificar entradas existentes en tablas
  • DELETE: permite a los usuarios borrar entradas de la tabla
  • DROP: permite a los usuarios eliminar tablas de bases de datos completas

Consejo profesional

El uso del tipo de permiso ALL PRIVILEGES (como hemos mostrado en el ejemplo anterior) permitirá todos los permisos listados antes.

Para usar cualquiera de estas opciones, simplemente reemplaza PERMISSION_TYPE con la palabra clave apropiada. Para aplicar varios privilegios, sepáralos con una coma. Por ejemplo, puedes asignar CREATE y SELECT a tu cuenta de usuario MySQL no root con este comando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
GRANT CREATE, SELECT ON * . * TO 'nombre_usuario'@'localhost';
GRANT CREATE, SELECT ON * . * TO 'nombre_usuario'@'localhost';
GRANT CREATE, SELECT ON * . * TO 'nombre_usuario'@'localhost';

A veces, puedes encontrarte con una situación en la que necesitas revocar los privilegios otorgados a un usuario. Puedes hacerlo ingresando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
REVOKE PERMISSION_TYPE ON database_name.table_name FROM ‘nombre_usuario’@‘localhost’;
REVOKE PERMISSION_TYPE ON database_name.table_name FROM ‘nombre_usuario’@‘localhost’;
REVOKE PERMISSION_TYPE ON database_name.table_name FROM ‘nombre_usuario’@‘localhost’;

Por ejemplo, para retirar todos los privilegios para un usuario no root, debes usar:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
REVOKE ALL PRIVILEGES ON * . * FROM 'nombre_usuario'@'localhost';
REVOKE ALL PRIVILEGES ON * . * FROM 'nombre_usuario'@'localhost';
REVOKE ALL PRIVILEGES ON * . * FROM 'nombre_usuario'@'localhost';

Finalmente, puedes eliminar por completo una cuenta de usuario existente mediante el siguiente comando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
DROP USER ‘nombre_usuario’@‘localhost’;
DROP USER ‘nombre_usuario’@‘localhost’;
DROP USER ‘nombre_usuario’@‘localhost’;

Consejo profesional

Recuerda que debes tener acceso de root para ejecutar cualquiera de estos comandos. Asegúrate de ejecutar el comando FLUSH PRIVILEGES; después de hacer tus cambios.

Cómo mostrar los privilegios de un usuario de MySQL

Para encontrar qué privilegios ya se han otorgado a un usuario de MySQL, puedes usar el comando SHOW GRANTS:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SHOW GRANTS FOR 'nombre_usuario'@'localhost';
SHOW GRANTS FOR 'nombre_usuario'@'localhost';
SHOW GRANTS FOR 'nombre_usuario'@'localhost';

El resultado será similar a esto:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
+---------------------------------------------------------------------------+
| Grants for user_name@localhost |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user_name'@'localhost' |
| GRANT ALL PRIVILEGES ON 'database_name'.* TO 'user_name'@'localhost'. |
| REVOKE ALL PRIVILEGES ON * . * FROM 'user_name'@'localhost';
+---------------------------------------------------------------------------+
3 rows in set (0.00 sec)
+---------------------------------------------------------------------------+ | Grants for user_name@localhost | +---------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'user_name'@'localhost' | | GRANT ALL PRIVILEGES ON 'database_name'.* TO 'user_name'@'localhost'. | | REVOKE ALL PRIVILEGES ON * . * FROM 'user_name'@'localhost'; +---------------------------------------------------------------------------+ 3 rows in set (0.00 sec)
+---------------------------------------------------------------------------+
| Grants for user_name@localhost                                             |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user_name'@'localhost'                              |
| GRANT ALL PRIVILEGES ON 'database_name'.* TO 'user_name'@'localhost'.      |
| REVOKE ALL PRIVILEGES ON * . * FROM 'user_name'@'localhost';
+---------------------------------------------------------------------------+
3 rows in set (0.00 sec)

Conclusión

Una base de datos es una parte esencial de cada sitio web y aplicación web porque almacena todos los datos del usuario.

Para administrarla y comunicarte con ella de manera más eficiente, necesitarás un sistema de administración de base de datos. Es por eso que recomendamos usar la opción más popular y recomendada: MySQL, debido a su confiabilidad y facilidad de uso.

En este tutorial, has aprendido algunos comandos básicos para realizar varias tareas en MySQL, que incluyen:

  • Cómo crear un usuario MySQL y otorgarle todos los privilegios.
  • Otorgar permisos específicos a un usuario, revocarlos y eliminar un usuario de MySQL por completo.
  • Cómo ver qué privilegios ya tiene un usuario de MySQL.

Esperamos que esta guía te haya sido de utilidad. Si tienes algún comentario o pregunta, escríbela en la sección de abajo. ¡Buena suerte!

Author
El autor

Deyimar A.

Deyi es una entusiasta del marketing digital, con experiencia en diseño de páginas web, creación de contenido, copywrite y SEO. Forma parte del equipo de SEO & Localization de Hostinger. En su tiempo libre, le gusta desarrollar proyectos, leer un libro o ver una buena película.