Mysql 只在一个数据库上授予文件
我想允许johnmysql用户使用LOAD DATA命令。因此,我以root用户身份登录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
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服务器可以访问的文件系统。因此,将其限制在特定的数据库是没有用的,因为用户将能够访问文件系统级别的所有数据库。这是因为它只能设置为打开。在哪里使用授权文件查询语法我没有看到任何示例代码,因此它被用来解释它是如何完成的,因为我需要授权文件以供文件外使用。然后我需要在输出文件完成后拒绝该文件。为了澄清,希望将文件权限限制为一个数据库是合乎逻辑的。但这会给人一种虚假的安全感。只有最值得信任的用户才能获得它。