我正在创建一个数据库应用程序,它提供任何数据库的动态视图。对于安全功能,我想只允许选择。这可以通过检查第一个单词是否被选择来完成吗?我知道我应该有另一个创建的权限有限的用户,但我试图避免这种情况,以便我的应用程序易于使用。
基本上,有人可以给我一个示例查询SELECT是第一个单词但实际上可以更改数据吗?
答案 0 :(得分:2)
有人可以给我一个例子查询SELECT是第一个单词的地方 但实际上可以改变数据吗?
没有这样的事情。 当然,除非您正在选择改变数据的功能。见@ spencer7593答案。SELECT
仅用于数据读取。
但是,您可能希望检查行阻塞SELECT
命令并避免它们,因为您似乎会将数据库打开给第三方。
进一步阅读:http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html
答案 1 :(得分:1)
这是一个可以修改数据的SELECT语句的例子(它是一个模糊的角落案例,但它表明 IS 可能导致使用SELECT修改数据)
SELECT udf_myfunction()
鉴于,例如:
CREATE FUNCTION udf_myfunction() RETURNS INT
READS SQL DATA
BEGIN
DELETE FROM dummy_table1;
UPDATE dummy_table2 SET mycol = CONCAT(mycol,SUBSTR(mycol,1,1));
RETURN 0;
END
(当然,用户需要获得该功能的EXECUTE
权限才能执行该功能。)