2012-04-16 40 views
5

Tôi có một bảng có một cột mà tôi muốn ngăn người dùng nhất định không nhìn thấy. Tôi hiểu rằng tôi có thể thực hiện việc này bằng cách sử dụng chế độ xem, tức là có chế độ xem loại trừ cột cụ thể và từ chối quyền truy cập vào bảng nhưng cho phép truy cập vào chế độ xem (lưu ý, người dùng không cần phải cập nhật bảng /lượt xem).Mysql: cho phép truy vấn trên cột không thể truy cập khác?

I do tuy nhiên muốn cho phép truy vấn bình đẳng so với trường. Chẳng hạn như:

SELECT * FROM some_table_or_view WHERE hidden_field = 'some_value'; 

Để làm rõ:

  • nó không phải là có thể có hidden_field giá trị được trả lại trong một truy vấn chung
  • nó nên có thể chạy một truy vấn với một hạn chế (tốt nhất chỉ là một ràng buộc bình đẳng) trên giá trị hidden_field

Điều này có thể?

(EDIT: nếu có giải pháp trong một dbms khác với Mysql, tôi cũng rất vui khi biết điều đó).

Trả lời

4

Bạn có thể tạo thủ tục được lưu trữ sẽ trả về tất cả các trường bạn cho phép nó quay lại, sau đó bạn có thể chuyển giá trị hidden_value (tiêu chí lọc) làm tham số.

Cấm người dùng cơ sở dữ liệu truy cập vào bảng nhưng cho phép họ gọi thủ tục được lưu trữ.

Sau đó, tất nhiên, bạn sẽ phải tạo một số thủ tục được lưu trữ nếu bạn có một số loại truy vấn đối với bảng. Nhưng ít nhất nó giải quyết vấn đề của bạn với các quyền.

+0

Cảm ơn, đó là một gợi ý tốt và có thể là khả thi. – davmac

0

Không, không. Cung cấp cho người dùng khả năng lọc kết quả với cột hidden_value nghĩa là họ có quyền chọn và điều đó cũng có nghĩa là họ có thể thấy cột và do đó chọn cột đó. Ở đây http://dev.mysql.com/doc/refman/5.1/en/grant.html là danh sách các quyền bạn có thể cấp hoặc không cấp cho người dùng trong mySQL.

Các vấn đề liên quan