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

Introducción

MySQL es un software de administración de bases de datos de código abierto que ayuda a los usuarios a almacenar, organizar y recuperar datos. Tiene diversas opciones para otorgar permisos matizados a usuarios específicos en las tablas y bases de datos. Este tutorial dará una breve descripción general de algunas de esas opciones.

¿Qué significan las secciones resaltadas?

En este tutorial, ¡cualquier línea que el usuario deba ingresar o personalizar estará resaltada! El resto será copiar y pegar en su mayoría.

Cómo crear un nuevo usuario

En la Parte 1 del Tutorial de MySQL, hicimos todas las ediciones en MySQL como usuario root con pleno acceso a todas las bases de datos. Sin embargo, en los casos en que se requieren más restricciones, existen formas de crear usuarios con permisos personalizados.

Comencemos creando un nuevo usuario en el shell de MySQL:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

 

Nota: Al añadir usuarios en el shell de MySQL en este tutorial, especificaremos el host del usuario como localhost, y no la dirección IP del servidor. localhost es un nombre de host que significa “este equipo”, y MySQL trata este nombre de host en particular de manera especial: cuando un usuario con ese host inicia sesión en MySQL, intentará conectarse al servidor local utilizando un archivo de socket de Unix. Por lo tanto, localhost se utiliza normalmente cuando planea conectarse implementando SSH a su servidor o cuando está ejecutando el cliente mysql local para conectarse al servidor MySQL local.

En este momento, 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 se debe hacer es proporcionar al usuario acceso a la información que necesitará.

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

 

Los asteriscos en este comando se refieren a la base de datos y la tabla (respectivamente) a los 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.

Tenga en cuenta que en este ejemplo estamos otorgando a newuser acceso de root completo a todo en nuestra base de datos. Si bien esto es útil para explicar algunos conceptos de MySQL, puede ser poco práctico para la mayoría de casos de uso y podría poner la seguridad de su base de datos en alto riesgo.

Una vez que haya finalizado los permisos que desea configurar para sus nuevos usuarios, asegúrese siempre de volver a cargar todos los privilegios.

FLUSH PRIVILEGES;

 

Sus cambios ahora estarán vigentes.

Cómo otorgar diferentes permisos de usuario

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

  • ALL PRIVILEGES: Como vimos antes, esto le otorgaría a un usuario de MySQL acceso completo a una base de datos designada (o si no se selecciona ninguna base de datos, acceso global a todo el sistema).
  • CREATE: Permite crear nuevas tablas o bases de datos.
  • DROP: Permite eliminar tablas o bases de datos.
  • DELETE: Permite eliminar filas de las tablas.
  • INSERT: Permite insertar filas en las tablas.
  • SELECT: Les permite usar el comando SELECT para leer las bases de datos.
  • UPDATE: Permite actualizar las filas de las tablas.
  • GRANT OPTION: Permite otorgar o eliminar privilegios de otros usuarios.

Para proporcionar un permiso a un usuario específico, puede usar este marco:

GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';

 

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

Cada vez que actualice o cambie un permiso, asegúrese de usar el comando Flush Privileges.

Si necesita revocar un permiso, la estructura es casi la misma que para otorgar un permiso:

REVOKE type_of_permission ON database_name.table_name FROM 'username'@'localhost';

 

Tenga en cuenta que, cuando revoca permisos, la sintaxis requiere que utilice FROM en lugar de TO, como se utiliza para otorgar permisos.

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

SHOW GRANTS FOR 'username'@'localhost';

 

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

DROP USER 'username'@'localhost';

 

Para probar su nuevo usuario, cierre sesión escribiendo lo siguiente:

quit

 

y vuelva a iniciar sesión con este comando en el terminal:

mysql -u [username] -p

 

 

Conclusión

Después de completar este tutorial, debería tener una idea de cómo agregar nuevos usuarios y otorgarles diversos permisos en una base de datos de MySQL. Desde aquí, puede continuar explorando y experimentando con diferentes configuraciones de permisos para su base de datos, o posiblemente quiera aprender más sobre algunas configuraciones de MySQL de nivel superior.