我正在创建一个数据库应用程序,它提供任何数据库的动态视图。对于安全功能,我只想允许选择。这可以简单地通过检查第一个单词是否被选中来完成吗?我知道我应该创建另一个具有有限权限的用户,但我试图避免这种情况,以便我的应用程序易于使用。
基本上,有人可以给我一个示例查询,其中 SELECT 是第一个单词,但实际上可以更改数据?
有人可以给我一个示例查询,其中 SELECT 是第一个单词,但实际上可以更改数据?
没有这样的事。当然,除非您选择更改数据的功能。请参阅@spencer7593 答案。SELECT
仅用于数据读取。
但是,您可能想要检查行阻塞SELECT
命令并避免它们,因为您似乎会将您的数据库开放给第 3 方。
进一步阅读: http ://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html
这是一个可以修改数据的 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
对该函数的权限,才能执行该函数。)