Asunto: Restricción permisos a nivel de tabla en MySQL
Tengo un servidor Linux Ubuntu Server 11.04 con MySQL 5.1, tengo dos bases de datos (catálogos): facturacion y contabilidad. En cada uno de ellos tengo varias tablas. La aplicación de facturación y la de contabilidad tienen una parte de aplicación de escritorio con VB.Net y otra parte vía web con PHP y Apache.
Todo me funciona bien pero, hasta ahora, usaba un mismo usuario de MySQL para todo y esto no es muy seguro, pues este usuario era "superusuario" (administrador), tenía permisos para todas las tablas de todos las bases de datos.
Ahora, tras implementar el acceso vía web por PHP y Apache la situación es más delicada en cuanto a seguridad se refiere y quiero crear un usuario en MySQL que tenga permisos de consulta sólo a determinadas tablas de las bases de datos anteriores, pero no sé cómo hacer esto y no sé si se puede hacer este tipo de granularidad en la seguridad de MySQL a nivel de tabla.
Publicado:
Vie May 11, 2012 9:59 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Restricción permisos a nivel de tabla en MySQL
Anuncios
varios escribió:
Tengo un servidor Linux Ubuntu Server 11.04 con MySQL 5.1, tengo dos bases de datos (catálogos): facturacion y contabilidad. En cada uno de ellos tengo varias tablas. La aplicación de facturación y la de contabilidad tienen una parte de aplicación de escritorio con VB.Net y otra parte vía web con PHP y Apache.
Todo me funciona bien pero, hasta ahora, usaba un mismo usuario de MySQL para todo y esto no es muy seguro, pues este usuario era "superusuario" (administrador), tenía permisos para todas las tablas de todos las bases de datos.
Ahora, tras implementar el acceso vía web por PHP y Apache la situación es más delicada en cuanto a seguridad se refiere y quiero crear un usuario en MySQL que tenga permisos de consulta sólo a determinadas tablas de las bases de datos anteriores, pero no sé cómo hacer esto y no sé si se puede hacer este tipo de granularidad en la seguridad de MySQL a nivel de tabla.
Sí que es posible, aunque no podrás hacerlo desde MySQL Administrator ni desde MySQL Workbench (modo gráfico), podrás hacerlo desde el modo texto (por comando). Te indicamos cómo dar determinados permisos o privilegios a un determinado usuario para una determinada tabla de una determirnada base de datos:
1. Abre una ventana de terminal si estás en Linux, en Windows una ventana de MS-DOS.
2. Escribe el comando:
Código:
mysql --user="nombre_usuario" --password="contraseña"
(El usuario con el que iniciemos sesión aquí debe ser root o uno con permisos de administrador)
Si lo tienes en el PATH se te ejecutará esta utilidad de línea de comandos de MySQL. Si no se te ejecuta accede con el comando "cd" a la carpeta donde se encuentre la instalación de MySQL y la subcarpeta "bin".
3. Ejecuta el siguiente comando para quitar los permisos de INSERT, UPDATE y DELETE en todas las tablas del catálogo "facturacion" para el usuario "usuario_facturacion":
Código:
revoke INSERT, DELETE, UPDATE on facturacion.* from 'usuario_facturacion'@'%';
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A