Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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 - Fatal编程技术网

Mysql 只在一个数据库上授予文件

Mysql 只在一个数据库上授予文件,mysql,Mysql,我想允许johnmysql用户使用LOAD DATA命令。因此,我以root用户身份登录mysql终端,并发出以下声明: grant file on johndatabase.* to 'john'@'localhost'; 但我得到了以下错误: ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES 如果我用*.替换了johndabase.*,那么一切都正常。但是*..*不是指所有的数据库吗?我想将john

我想允许johnmysql用户使用LOAD DATA命令。因此,我以root用户身份登录mysql终端,并发出以下声明:

grant file on johndatabase.* to 'john'@'localhost';
但我得到了以下错误:

ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

如果我用
*.
替换了
johndabase.*
,那么一切都正常。但是
*..*
不是指所有的数据库吗?我想将john mysql用户限制为仅使用johndatabase。

您不能仅对单个数据库授予文件权限。这在逻辑上没有任何意义。想想说什么:

“文件”权限授予您在计算机上读写文件的权限 服务器主机使用加载数据填充并选择。。。入外排 语句和LOAD_FILE()函数。拥有该文件的用户 特权可以读取服务器主机上的任何文件 世界可读或MySQL服务器可读。(这意味着用户 可以读取任何数据库目录中的任何文件,因为服务器可以 访问这些文件中的任何一个。)

因此,文件权限是全局权限。它影响服务器上的所有文件,只允许访问全局命令(例如,
加载数据填充
等),而不限于任何数据库。授予文件权限的唯一方法是在所有数据库上使用以下语法:

GRANT FILE ON *.* TO 'john'@'localhost';

通过文件特权,您可以让用户访问mysql服务器可以访问的文件系统。因此,将其限制在特定的数据库是没有用的,因为用户将能够访问文件系统级别的所有数据库。这是因为它只能设置为打开。

在哪里使用授权文件查询语法我没有看到任何示例代码,因此它被用来解释它是如何完成的,因为我需要授权文件以供文件外使用。然后我需要在输出文件完成后拒绝该文件。为了澄清,希望将文件权限限制为一个数据库是合乎逻辑的。但这会给人一种虚假的安全感。只有最值得信任的用户才能获得它。