¿Cómo crear un nuevo usuario y otorgarle permisos en MySQL?

Actualizado el 15 de agosto, 2016. Por BlueHosting.

MySQL es un software de código abierto para la gestión de bases de datos que ayuda a los usuarios a almacenar y organizar datos para poder obtenerlos posteriormente. Tiene una gran variedad de opciones para otorgar permisos particulares a usuarios específicos dentro de las tablas y bases de datos. Este tutorial aborda brevemente algunas de estas opciones.

Crear un nuevo usuario

Si apenas está comenzando con MySQL, quizás le sea útil visitar nuestro tutorial básico de MySQL antes de continuar con esta guía.

En la mayoría de los casos en los cuales se crea un usuario MySQL, se requieren restricciones con respecto a los permisos que tendrán estos usuarios dentro de la base de datos o tablas. Hay varias maneras de crear usuarios con permisos personalizados.

Primero ingrese en su Shell MySQL; para ingresar como usuario root ejecute el siguiente comando:

mysql -u root -p

Se le solicitará el ingreso de su contraseña de usuario root MySQL (recuerde no confundir con la contraseña del usuario root del servidor).

Ahora continuemos con la creación de un usuario desde el Shell MySQL:

CREATE USER 'nuevousuario'@'localhost' IDENTIFIED BY 'contraseña';

En este punto, nuevousuario no tiene permisos para hacer nada con la base datos. De hecho, si nuevousuario intenta iniciar sesión (con la contraseña contraseña) no podrá ni siquiera llegar hasta el shell MySQL.

Por lo tanto, lo primero que debe hacer es proporcionar al usuario el acceso a la información que necesita.

GRANT ALL PRIVILEGES ON * . * TO 'nuevousuario'@'localhost';

Los asteriscos en este comando se refieren a la base de datos y a la tabla (respectivamente) a las que el usuario puede acceder; este comando específico le permitiría a nuevousuario leer, editar, ejecutar y realizar todas las tareas dentro de todas las tablas y bases de datos. ¡Esto es debido a que el asterisco * representa todo!, en este caso: todas las bases de datos y todas las tablas.

Una vez que haya terminado de asignar los permisos que quiere establecer para sus nuevos usuarios, siempre asegúrese de volver a cargar todos los privilegios.

FLUSH PRIVILEGES;

Ahora sus cambios surtirán efecto.

Cómo otorgar permisos diferentes a los usuarios

A continuación una lista breve de otras posibilidades de permisos comunes que un usuario podría tener:

  • ALL PRIVILEGES: tal como vimos antes, esto permitiría que un usuario MySQL accediera completamente a la base de datos designada (o si no se selecciona una base de datos en particular, el usuario tendría acceso a todo el sistema);
  • CREATE: les permite a los usuarios crear nuevas tablas o bases de datos;
  • DROP: les permite eliminar tablas o bases de datos;
  • DELETE: les permite eliminar filas de tablas;
  • INSERT: les permite insertar filas en tablas;
  • SELECT: les permite usar el comando SELECT para consultar información en bases de datos;
  • UPDATE: les permite actualizar filas en tablas;
  • GRANT OPTION: les permite otorgar o suprimir privilegios de otros usuarios de la manera que vimos anteriormente, esto le daría a un usuario MySQL todo el acceso a una base de datos designada (o si no se selecciona una base de datos en particular, a todo el sistema).

Para proporcionar un permiso específico a un usuario, puede usar la siguiente estructura:

GRANT [tipo de permiso] ON [nombre de la base de datos].[nombre de la tabla] TO '[nombredeusuario]'@'localhost';

Si usted desea otorgar acceso a cualquier base de datos o a cualquier tabla, asegúrese de poner un asterisco (*) en lugar del nombre de la base de datos o el nombre de la tabla.

Cada vez que actualice o cambie un permiso, asegúrese de utilizar el comando FLUSH PRIVILEGES mencionado anteriormente.

Si usted necesita revocar un permiso, la estructura es casi idéntica a la primera:

REVOKE [tipo de permiso] ON [nombre de la base de datos].[nombre de la tabla] FROM '[nombredeusuario]'@'localhost';

Tal como se pueden eliminar bases de datos usando DROP, puede usar DROP para borrar un usuario completamente:

DROP USER 'usuariodeejemplo'@'localhost';

Para probar un usuario nuevo, cierre sesión usando:

quit

Y vuelva a ingresar con este comando en su terminal:

mysql -u [nombredeusuario]-p

Las combinaciones para el otorgamiento o revocación de permisos son innumerables y dependerán de la configuración de sus bases de datos y de los usuarios que tendrán acceso a estas. Puede hacer distintas pruebas antes de que su plataforma entre en producción, una vez ahí debe tener más cuidado con los comandos que ejecute y los permisos que otorgue en MySQL.

Recursos adicionales

Este tutorial presenta un enfoque muy básico del tema de los permisos MySQL, existen otras opciones más avanzadas que pueden ser útiles si usted debe administrar bases de datos para grandes aplicaciones o plataformas. Puede consultar los siguientes recursos en busca de información adicional sobre este tema. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos dar fe de la actualidad o precisión de los contenidos externos.

  • Manual sobre los privilegios provistos por MySQL (documentación oficial de MySQL).
  • Manual del comando GRANT de MySQL (documentación oficial de MySQL).

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...