¿Cómo mostrar solo campos con privilegios Select? (MySQL)

Iniciado por 1mpuls0, 24 Marzo 2015, 00:16 AM

0 Miembros y 1 Visitante están viendo este tema.

1mpuls0

He creado un usuario que únicamente tendrá privilegios select a algunos campos de las tablas.

Los permisos se los asigno con el siguiente query
Código (sql) [Seleccionar]

GRANT SELECT, SELECT (campo1, campo3) ON `database`.`table` TO 'user'@'%'


Pero al hacer

Código (sql) [Seleccionar]

SELECT * FROM `table`;


Me muestra todos los campos sin problema.

Código (bash) [Seleccionar]

+--------+--------+--------+
| 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.
abc

MinusFour

#1
¿Creaste el usuario desde la terminal tambien?

Puedes poner el resultado de:

Código (mysql) [Seleccionar]

SHOW GRANTS FOR 'user'@'localhost';


Edit:

Me acabo de dar cuenta que tienes:

Código (mysql) [Seleccionar]

GRANT SELECT;


Y luego le estas dando:

Código (mysql) [Seleccionar]

GRANT SELECT (campo1, campo3);


Con el primer grant basicamente le estas diciendo que puedes leer toda la tabla.

1mpuls0

#2
1. No cree el usuario desde la terminal, utilicé la gui sqlyog

2. Resultado de la show grants
Código (sql) [Seleccionar]

"GRANT SELECT, SELECT (campo1, campo3) ON `database`.`table` TO 'user'@'%'"


3. Si no coloco SELECT, SELECT me muestra el siguiente mensaje y hago
Código (sql) [Seleccionar]

SELECT * FROM table;


Obtengo
Citar
Error Code: 1142
SELECT command denied to user 'user'@'localhost' for table 'table'

Edito:
Aunque si solo hago.
Código (sql) [Seleccionar]

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
abc