Crear usuario en MYSQL con CREATE USER

Para crear un nuevo usuario en MySQL, necesitas acceso a la base de datos. Además, también debes contar con privilegios de usuario root, con los que puedes crear cuentas de usuario y gestionar los permisos asignados. Asimismo, es importante que sepas qué tipo de permiso vas a otorgar al nuevo usuario: permisos de lectura, permisos de escritura o incluso permisos de administrador.

Crear un usuario con MySQL

Al instalar el sistema gestor de bases de datos, MySQL crea una cuenta root con control total sobre las bases de datos, tablas y usuarios. Si necesitas ayuda con la instalación, encontrarás toda la información importante en la siguiente guía para aprender a utilizar MySQL.

Con una cuenta root, puedes crear nuevas cuentas de usuario MySQL y asignarles una serie de permisos. Es importante conocer que en los sistemas Ubuntu con MySQL 5.7 y versiones posteriores, la autenticación del usuario root no se realiza con contraseña, sino con el plugin auth_socket. Para que la autenticación se lleve a cabo con éxito, el nombre del usuario del sistema que quiere usar el cliente MySQL debe coincidir con el nombre del usuario MySQL especificado en el comando. Es decir, para poder acceder a la cuenta root es importante anteponer el comando sudo:

$ sudo mysql
bash

Para crear un nuevo usuario en MySQL, usa el comando CREATE USER, con el que podrás crear un usuario con un nombre de usuario y contraseña específicos:

mysql> CREATE USER 'nombreusuario'@'host' IDENTIFIED WITH authentication_plugin BY 'contraseña';
bash

Sustituye “nombreusuario” por un nombre de usuario de tu elección. A continuación, introduce en host el nombre del host desde el que se conectará el nuevo usuario. Si el usuario solo va a poder acceder desde tu servidor Ubuntu local, puedes introducir localhost.

Existen varias opciones disponibles de plugin de autenticación. Aunque el plugin auth_socket ofrece un alto nivel de seguridad, ya que los usuarios deben introducir una contraseña para acceder a la base de datos, también impide las conexiones remotas. Esto puede desembocar en un mayor esfuerzo cuando programas externos necesitan interactuar con MySQL. Como alternativa, puedes omitir la parte del comando WITH authentication_plugin para que el usuario realice la autenticación con el plugin estándar de MySQL caching_sha2_password. El comando en este caso se muestra como sigue:

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
bash

Después de haber creado un nuevo usuario, llega el momento de asignarle una serie de permisos.

Asignar permisos de usuario con MySQL create user

Para garantizar la seguridad de los datos en MySQL, crear y gestionar permisos de usuario es muy importante. El comando para asignar permisos de usuario es:

mysql> GRANT PRIVILEGE ON database.table TO 'nombreusuario'@'host';
bash

El valor PRIVILEGE determina de qué privilegios dispone el usuario en la base de datos y tabla especificadas. Puedes reemplazar este valor con los siguientes comandos, entre otros:

  • CREATE: permite a los usuarios crear una base de datos o tabla.
  • SELECT: permite a los usuarios acceder a datos.
  • INSERT: permite a los usuarios añadir nuevas entradas a las tablas.
  • UPDATE: permite a los usuarios cambiar entradas existentes en las tablas.
  • DEELETE: permite a los usuarios borrar entradas de la tabla.
  • DROP: permite a los usuarios eliminar tablas completas de la base de datos.

También puedes otorgar varios privilegios de una vez a los nuevos usuarios. Utiliza el mismo comando, pero separa cada privilegio con una coma:

mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'nombre_usuario'@'host';
bash

Si lo deseas, puedes conceder los privilegios estipulados para todas las bases de datos o tablas en un único comando. Solo tienes que introducir * en lugar de los nombres de la base de datos y las tablas. En el siguiente comando, por ejemplo, se autoriza a un usuario a consultar datos en todas las bases de datos y tablas con SELECT, así como a añadir nuevas entradas con INSERT y a modificar entradas existentes con UPDATE.

mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO nombredeusuario@'host';
bash

Después de ejecutar en MySQL CREATE USER o GRANT, puedes utilizar el comando FLUSH PRIVILEGES para actualizar la base de datos y actualizar las tablas de privilegios. De este modo, entran en vigor los nuevos permisos:

mysql> FLUSH PRIVILEGES;
bash

Sin embargo, es importante que los usuarios solo cuenten con los permisos que necesiten. Al fin y al cabo, otorgándole a los usuarios determinados privilegios, también estás aumentando el riesgo de seguridad.

Crear usuario MySQL: revocar permisos de usuario

El comando REVOKE se utiliza para revocar permisos de usuario en MySQL. La sintaxis es similar a la del comando GRANT. Sin embargo, en este caso debes utilizar FROM en lugar de TO:

mysql> REVOKE type_of_permission ON nombre_base_de_datos.nombre_tabla FROM 'nombreusuario'@'host';
bash

Para mostrar los permisos actuales de un usuario, puedes utilizar el comando SHOW GRANTS:

mysql> SHOW GRANTS FOR 'nombreusuario'@'host';
bash

El comando DROP se utiliza para eliminar un usuario:

mysql> DROP USUARIO 'nombreusuario'@'localhost';
bash

Sin embargo, la eliminación de usuarios hay que llevarla a cabo con mucho cuidado, sobre todo en el caso de los usuarios con privilegios administrativos. Evita la pérdida accidental de datos asegurándote de que eliminas el usuario que realmente deseas.

Después de crear un nuevo usuario MySQL y otorgarle permisos, puedes salir del cliente MySQL:

mysql> exit
bash
¿Le ha resultado útil este artículo?
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede obtener más información, o bien conocer cómo cambiar la configuración de su navegador en nuestra. Política de Cookies.
Page top