2012-04-16 12 views
5

Tengo una tabla con una columna que quiero evitar que vean ciertos usuarios. Entiendo que debería poder hacer esto usando una vista, es decir, tener una vista que excluya la columna en particular, y negar el acceso a la tabla, pero permitir el acceso a la vista (nota, los usuarios no necesitan poder actualizar la tabla /ver).Mysql: ¿permite la consulta en una columna inaccesible?

I do sin embargo, quiero permitir una consulta de igualdad en el campo. Tales como:

SELECT * FROM some_table_or_view WHERE hidden_field = 'some_value'; 

Para aclarar:

  • que no debería ser posible tener las hidden_field valores de ser devueltos en una consulta general
  • debería ser posible ejecutar una consulta con una restricción (preferiblemente solo una restricción de igualdad) en el valor hidden_field

¿Esto es posible?

(EDITAR: si hay una solución en un dbms que no sea Mysql, me gustaría saber de eso también).

Respuesta

4

Puede crear un procedimiento almacenado que devuelva todos los campos que le permitió devolver, y luego puede pasar el valor oculto (criterio de filtrado) como parámetro.

Impedir a los usuarios de su base de datos el acceso a la tabla, pero les permite llamar a los procedimientos almacenados.

Luego, por supuesto, tendría que crear varios procedimientos almacenados si tuviera varios tipos de consultas en la tabla. Pero al menos resuelve tu problema con los derechos.

+0

Gracias, es una buena sugerencia y podría ser viable. – davmac

0

No, no lo es. Darle al usuario la posibilidad de filtrar los resultados con la columna valor_cubierto significa que tienen derechos selectos, y eso también significa que pueden ver la columna y, por lo tanto, seleccionarla. Aquí http://dev.mysql.com/doc/refman/5.1/en/grant.html es una lista de los derechos que puede otorgar o no otorgar a los usuarios en mySQL.

Cuestiones relacionadas