Inicio Foros Bases de datos MySQL Asignar permisos a un usuario solo a tablas concretas en MySQL Respuesta a: Asignar permisos a un usuario solo a tablas concretas en MySQL

#3460
alonsojpd
Superadministrador

Te indicamos los pasos para crear un usuario y establecerle permisos a nivel de tabla en MySQL. Puedes hacerlo desde la línea de comandos de tu servidor Linux CentOS con MySQL:

1. Conéctate a MySQL con el comando:

mysql –user=»root» –password=»contraseña»

2. Crea el usuario con el comando:

create user ‘nombre_usuario’@’localhost’ identified by ‘contraseña’;

3. Con esta consulta puedes comprobar que el usuario se ha creado correctamente:

select user, host from mysql.user;

4. Para establecer permisos para una tabla concreta, por ejemplo el permiso de solo lectura (select) e incluso desde un equipo concreto de la red (por ejemplo desde todos los que tengan IP 192.168.1.*):

grant select on nombre_bd.nombre_tabla to ‘nombre_usuario’@’192.168.1.%’;

Donde:

  • nombre_usuario: nombre que quieras darle al usuario con el que accederás a MySQL. Si queremos dar acceso para todos los usuarios (no es recomendable) colocaremos un *.
  • nombre_bd: nombre de la base de datos (catálogo) que contiene las tablas a las que le darás acceso. Si queremos dar acceso a todas las bases de datos (no es recomendable) colocaremos un *.
  • nombre_tabla: nombre de la tabla a la que le darás acceso. Si queremos dar acceso a todas las bases de datos (no es recomendable) colocaremos un *.
  • select: indica el tipo de permiso que le darás para la tabla, hay varias opciones y se pueden añadir juntas (separadas por comas): insert, select, update, delete, drop,… Si queremos todos los permisos (no suele ser recomendable) se pone un ALL.
  • 192.168.1.%: en este valor estableceremos desde que IP o rango de IP queremos que se acceda a MySQL con el usuario. Si queremos todos (no suele ser recomendable) se pone un %.

Para comprobar que se han asignado correctamente los permisos puedes ejecutar este otro comando:

show grants for ‘nombre_usuario’@’192.168.1.%’;

Por último ejecuta esta otra consulta para hacer efectivos permisos creados:

flush privileges;

A partir de este momento el usuario tendrá acceso de lectura (select) para la tabla indicada en la base de datos MySQL indicada y desde el equipo o equipos indicados.