1

我正在创建一个数据库应用程序,它提供任何数据库的动态视图。对于安全功能,我只想允许选择。这可以简单地通过检查第一个单词是否被选中来完成吗?我知道我应该创建另一个具有有限权限的用户,但我试图避免这种情况,以便我的应用程序易于使用。

基本上,有人可以给我一个示例查询,其中 SELECT 是第一个单词,但实际上可以更改数据?

4

2 回答 2

2

有人可以给我一个示例查询,其中 SELECT 是第一个单词,但实际上可以更改数据?

没有这样的事。SELECT仅用于数据读取。当然,除非您选择更改数据的功能。请参阅@spencer7593 答案。

但是,您可能想要检查行阻塞SELECT命令并避免它们,因为您似乎会将您的数据库开放给第 3 方。

进一步阅读: http ://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html

于 2012-08-23T21:52:30.533 回答
1

这是一个可以修改数据的 SELECT 语句示例(这是一个晦涩的极端情况,但它表明可以使用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对该函数的权限,才能执行该函数。)

于 2012-08-23T22:06:09.770 回答