mysql

Dar permiso de select, insert, update y delete a usuario en MySQL

Introducción

Esta es una entrada corta pero útil. A veces viene de maravilla saber cómo darle permisos a un usuario en MySQL de tal modo que realice las operaciones básicas de un CRUD o ABC.

Veamos cómo crear un usuario y darle permisos de:

  • select
  • insert
  • update
  • delete

Esto lo haremos con el comando GRANT en MySQL. Vamos allá.

Permitir operaciones básicas a un usuario sobre una base de datos en MySQL

Nota antes de todo: recuerda que, para crear usuarios y dar permisos, debes tener los permisos para dar permisos. Suena raro, pero en conclusión debes poder crear usuarios y administrar privilegios.

Recomiendo hacerlo con el usuario root si es que tienes acceso a él.

También recomiendo leer una introducción a la CLI de MySQL en caso de que no sepas usarla.

Paso 1: crear usuario

Este paso es opcional si tú ya tienes el usuario, pero de todos modos mostraré cómo crearlo. Recuerda siempre usar contraseñas seguras, aleatorias y largas en caso de que tu app esté en internet o en un lugar público.

Creamos el usuario con:

CREATE USER 'tu_usuario'@'localhost'
IDENTIFIED BY 'una_contraseña_muy_larga';

Cambia el usuario y la contraseña, así como el host si lo requieres. En mi caso lo hice así para un proyecto escolar:

Crear usuario

No está de más mencionar que le tomé una foto al código gracias a Polacode, una extensión de Visual Studio Code.

Paso 2: asignar permisos

Ahora simplemente le asignamos permisos a ese usuario sobre una base de datos o tabla. El código es:

GRANT SELECT, INSERT, UPDATE, DELETE
ON base_de_datos.tabla TO
'usuario_que_creaste'@'localhost'
IDENTIFIED BY 'la_contraseña_que_pusiste';

Aquí viene algo importante y lo explicaré detalladamente. Sobre todo en lo que va después de ON.

Si quieres darle permisos en todas las bases de datos a todas las tablas, usa ON *.*

En caso de que sea únicamente a una base de datos, pero a todas las tablas dentro de ella, usa ON nombre_de_la_base_de_datos.*

Por otro lado, si deseas que sea únicamente una base de datos y una tabla, escribe ON nombre_de_la_base_de_datos.nombre_de_la_tabla.

Para mi caso específico tuve que darle permisos sobre todas las tablas de la base de datos maquila_escuela. Quedó así:

Dar permisos a usuario de MySQL con GRANT

De esta manera le di permisos a mi usuario que hube creado anteriormente.

¿Por qué hacemos esto?

Esto fue una recomendación de mi profesor y ahora que lo pienso tenía razón. No existe la seguridad absoluta y tal vez un atacante pueda apoderarse de nuestra app o hacer una inyección SQL.

Si restringimos el usuario y le damos únicamente los permisos básicos, no podrá dañar otras bases de datos.

También podemos pensarlo desde el enfoque de un administrador de una base de datos: puede que haya otros usuarios que no deben ver información de otra base de datos o tabla.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.