仅允许对具有多种权限的MySQL用户进行选择
我正在创建一个数据库应用程序,它提供任何数据库的动态视图。对于安全功能,我只希望允许选择。这可以简单地通过检查第一个单词是否为select来完成吗?我知道我应该创建另一个权限有限的用户,但我正试图避免这样做,以便我的应用程序易于使用 基本上,有人能给我一个示例查询,其中SELECT是第一个单词,但数据实际上可以更改吗 有人能给我一个示例查询SELECT在哪里是第一个单词吗 但是数据实际上可以被改变吗 没有这样的事<代码>选择仅用于数据读取。当然,除非您选择的函数改变了数据。见@spencer7593答案 但是,您可能希望检查行阻塞仅允许对具有多种权限的MySQL用户进行选择,mysql,sql,database,Mysql,Sql,Database,我正在创建一个数据库应用程序,它提供任何数据库的动态视图。对于安全功能,我只希望允许选择。这可以简单地通过检查第一个单词是否为select来完成吗?我知道我应该创建另一个权限有限的用户,但我正试图避免这样做,以便我的应用程序易于使用 基本上,有人能给我一个示例查询,其中SELECT是第一个单词,但数据实际上可以更改吗 有人能给我一个示例查询SELECT在哪里是第一个单词吗 但是数据实际上可以被改变吗 没有这样的事选择仅用于数据读取。当然,除非您选择的函数改变了数据。见@spencer7593答案
SELECT
命令,并避免使用这些命令,因为您将向第三方打开数据库
进一步阅读:下面是一个可以修改数据的SELECT语句的示例(这是一个模糊的角落,但它表明可以使用SELECT命令修改数据) 例如:
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
权限,才能执行函数。)好的,谢谢。我想我会确保用户不能创建函数。
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