Tutorial

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

Published on December 3, 2014
Español
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:

  1. 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á.

  1. 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.

  1. 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:

  1. 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:

  1. 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:

  1. 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:

  1. DROP USER 'username'@'localhost';

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

  1. quit

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

  1. 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.

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Default avatar
TonnyORG

translator


Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
9 Comments


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Esta parte está mal descrita: ALL PRIVILEGES: como mencionamos previamente esto permite a un usuario de MySQL acceder a todas las bases de datos asignadas en el sistema.

Realmente otorga los permisos para todas las acciones (CREATE, DROP, DELETE, INSERT, SELECT, UPDATE), excepto GRANT OPTION y PROXY, que deberán aplicarse adicionalmente.

Origen: https://dev.mysql.com/doc/refman/5.7/en/grant.html

Yo creo que este tutorial es hasta mejor que la documentación oficial

Gracias :)

muy bueno me sirvio mucho , no como otros… Y como puedo saber si mi usuario actual tiene o no privilegios y cuales tiene , si los tiene :D

Muy bien explicado todo!

thank´s so much, y también por la traducción. excelente y fácil

Hermoso tutorial ;)

Muy buen tutorial me fue de mucha ayuda gracias!

Excelente tutorial.

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.