Cómo crear un nuevo usuario y otorgar permisos en MySQL

Introducción

MySQL es un software de gestión de bases de datos de código abierto que ayuda a los usuarios a almacenar, organizar y recuperar datos posteriormente. Tiene una variedad de opciones para otorgar permisos específicos a usuarios específicos dentro de las tablas y las bases de datos; este tutorial te dará una breve descripción de algunas de las muchas opciones.

Lo que significan los textos destacados

A lo largo de este tutorial, se resaltarán todas las líneas que el usuario necesita para ingresar o personalizar. El resto debe ser en su mayoría copiable y pegable.

Cómo crear un nuevo usuario

En la Parte 1 del Tutorial de MySQL, hicimos toda la edición en MySQL como usuario root, con acceso completo a todas las bases de datos. Sin embargo, en los casos en que se requieran más restricciones, hay formas de crear usuarios con permisos personalizados.

Comencemos por hacer un nuevo usuario dentro del shell de MySQL:

Nota:

Al agregar usuarios dentro del shell MySQL en este tutorial, especificaremos el host del usuario localhost y no la dirección IP del servidor.

Localhost es un nombre de host que significa “esta computadora”, y MySQL trata este nombre de host en particular especialmente: cuando un usuario con ese host inicia sesión en MySQL, intentará conectarse al servidor local mediante el uso de un archivo de socket Unix.

Por lo tanto, localhost generalmente se usa cuando planeas conectarte mediante SSHing a tu servidor o cuando estás ejecutando el cliente mysql local para conectarte al servidor MySQL local.

En este punto, newuser no tiene permisos para hacer nada con las bases de datos. De hecho, incluso si newuser intenta iniciar sesión (con la contraseña, password), no podrá acceder al shell de MySQL.

Por lo tanto, lo primero que debes hacer es proporcionar al usuario acceso a la información que necesitarán.

Los asteriscos en este comando se refieren a la base de datos y la tabla (respectivamente) a las que pueden acceder; este comando específico permite al usuario leer, editar, ejecutar y realizar todas las tareas en todas las bases de datos y tablas.

Ten en cuenta que, en este ejemplo, estamos otorgando a newuser acceso completo a la raíz de todo lo que está en nuestra base de datos. Si bien esto es útil para explicar algunos conceptos de MySQL, puede no ser práctico para la mayoría de los casos de uso y podría poner en riesgo la seguridad de tu base de datos.

Una vez que hayas finalizado los permisos que deseas configurar para tus nuevos usuarios, asegúrate siempre de volver a cargar todos los privilegios.

Tus cambios ahora entraran en efecto.

Cómo otorgar diferentes permisos de usuario

Aquí hay una breve lista de otros posibles permisos comunes que los usuarios pueden disfrutar.

  • ALL PRIVILEGES: como vimos anteriormente, esto permitiría a un usuario de MySQL tener acceso completo a una base de datos designada (o si no se selecciona una base de datos, el acceso global a todo el sistema)
  • CREATE: les permite crear nuevas tablas o bases de datos
  • DROP- les permite eliminar tablas o bases de datos
  • DELETE: les permite eliminar filas de las tablas
  • INSERT – les permite insertar filas en las tablas
  • SELECT: les permite usar el comando SELECT para leer a través de bases de datos
  • UPDATE – les permite actualizar las filas de la tabla
  • GRANT OPTION: les permite otorgar o eliminar los privilegios de otros usuarios

Para proporcionar un permiso de usuario específico, puedes utilizar este framework:

Si deseas darles acceso a cualquier base de datos o tabla, asegúrate de poner un asterisco (*) en el lugar del nombre de la base de datos o el nombre de la tabla.

Cada vez que actualices o cambies un permiso, asegúrate de usar el comando Flush Privileges.

Si necesitas revocar un permiso, la estructura es casi idéntica a la de otorgarlo:

Ten en cuenta que, al revocar permisos, la sintaxis requiere que uses FROM, en lugar de TO que usamos al otorgar permisos.

Puedes revisar los permisos actuales de un usuario ejecutando lo siguiente:

Al igual que puede eliminar bases de datos con DROP, puedes usar DROP para eliminar un usuario por completo:

Para probar tu nuevo usuario, cierra la sesión escribiendo:

y vuelve a iniciar sesión con este comando en la terminal:

Conclusión

Después de completar este tutorial, debes tener una idea de cómo agregar nuevos usuarios y otorgarles una variedad de permisos en una base de datos MySQL. Desde aquí, puedes continuar explorando y experimentando con diferentes configuraciones de permisos para tu base de datos, o puede que desees aprender más sobre algunas configuraciones avanzadas de MySQL.

Para obtener más información sobre los conceptos básicos de MySQL, te recomendamos que consulte los siguientes tutoriales:

Tutorial básico de MySQL en terminal para principiantes

Cómo usar HAProxy para configurar el balanceo de carga de MySQL