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.
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.
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.
Aquí se incluye una breve lista de otros posibles permisos comunes que los usuarios pueden disfrutar.
SELECT
para leer las bases de datos.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
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.
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.