He creado un usuario que únicamente tendrá privilegios select a algunos campos de las tablas.
Los permisos se los asigno con el siguiente query
GRANT SELECT, SELECT (campo1, campo3) ON `database`.`table` TO 'user'@'%'
Pero al hacer
SELECT * FROM `table`;
Me muestra todos los campos sin problema.
+--------+--------+--------+
| campo1 | campo2 | campo3 |
+--------+--------+--------+
| 1 | dato1 | valor1 |
| 2 | dato2 | valor2 |
+--------+--------+--------+
¿Cómo puedo hacer para que solamente me muestre los campos campo1 y campo3 al hacer la consulta?.
Gracias.
¿Creaste el usuario desde la terminal tambien?
Puedes poner el resultado de:
SHOW GRANTS FOR 'user'@'localhost';
Edit:
Me acabo de dar cuenta que tienes:
GRANT SELECT;
Y luego le estas dando:
GRANT SELECT (campo1, campo3);
Con el primer grant basicamente le estas diciendo que puedes leer toda la tabla.
1. No cree el usuario desde la terminal, utilicé la gui sqlyog
2. Resultado de la show grants
"GRANT SELECT, SELECT (campo1, campo3) ON `database`.`table` TO 'user'@'%'"
3. Si no coloco SELECT, SELECT me muestra el siguiente mensaje y hago
SELECT * FROM table;
Obtengo
Citar
Error Code: 1142
SELECT command denied to user 'user'@'localhost' for table 'table'
Edito:
Aunque si solo hago.
SELECT campo1, campo3 FROM table;
No tengo problemas.
Pensaba que con * solo me mostraría los campos que tienen ese permiso :P
Gracias por la ayuda