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
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:
1 |
mysql --user="root" --password="contraseña" |
2. Crea el usuario con el comando:
1 |
create user 'nombre_usuario'@'localhost' identified by 'contraseña'; |
3. Con esta consulta puedes comprobar que el usuario se ha creado correctamente:
1 |
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.*):
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:
1 |
show grants for 'nombre_usuario'@'192.168.1.%'; |
Por último ejecuta esta otra consulta para hacer efectivos permisos creados:
1 |
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.