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:
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í:
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.
Excelente amigo me salvaste!!!!
Pingback: Contraseña incorrecta con MySQL en Linux al entrar como root - Error 1698 (280000) - Parzibyte's blog
Pingback: Instalar LAMP y phpmyadmin en Ubuntu - Parzibyte's blog
Pingback: MySQL - Solución a Host is not allowed to connect to this MariaDB server - Parzibyte's blog