Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅允许对具有多种权限的MySQL用户进行选择_Mysql_Sql_Database - Fatal编程技术网

仅允许对具有多种权限的MySQL用户进行选择

仅允许对具有多种权限的MySQL用户进行选择,mysql,sql,database,Mysql,Sql,Database,我正在创建一个数据库应用程序,它提供任何数据库的动态视图。对于安全功能,我只希望允许选择。这可以简单地通过检查第一个单词是否为select来完成吗?我知道我应该创建另一个权限有限的用户,但我正试图避免这样做,以便我的应用程序易于使用 基本上,有人能给我一个示例查询,其中SELECT是第一个单词,但数据实际上可以更改吗 有人能给我一个示例查询SELECT在哪里是第一个单词吗 但是数据实际上可以被改变吗 没有这样的事选择仅用于数据读取。当然,除非您选择的函数改变了数据。见@spencer7593答案

我正在创建一个数据库应用程序,它提供任何数据库的动态视图。对于安全功能,我只希望允许选择。这可以简单地通过检查第一个单词是否为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