只允许具有许多权限的MySQL用户选择
问题描述:
我正在创建一个数据库应用程序,它提供任何数据库的动态视图。对于安全功能,我只想允许选择。这可以通过检查第一个单词是否被选择来完成吗?我知道我应该有另一个有限权限的创建用户,但我试图避免这样做,以便我的应用程序易于使用。只允许具有许多权限的MySQL用户选择
基本上,有人可以给我一个示例查询,其中SELECT是第一个单词,但实际上可以修改数据吗?
答
这里有一个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
权限的功能,以便执行该功能。)
答
有人可以给我一个示例查询,其中SELECT是第一个字 但实际上可以更改数据?
没有这样的事情。 除非你正在选择一个改变数据的函数。请参阅@ spencer7593答案。SELECT
仅用于数据读取。
但是,您可能想要检查行阻止SELECT
命令并避免它们,因为它似乎将您的数据库打开到第三方。
延伸阅读:http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html
好点,谢谢你。我想我会确保用户不能创建函数。 – jstn