当前位置: 首页 > 面试题库 >

仅在一个数据库上授予文件

拓拔弘扬
2023-03-14
问题内容

我想允许John mysql用户使用LOAD DATA命令。所以我以root用户身份登录mysql终端并发出以下语句:

grant file on johndatabase.* to 'john'@'localhost';

但我收到以下错误:

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

如果将替换johndatabase.**.*,则一切正常。但这并不*.*意味着所有数据库吗?我想将john
mysql用户限制为johndatabase。


问题答案:

您不能仅在单个数据库上授予FILE特权。从逻辑上讲这没有任何意义。考虑一下文档怎么说:

FILE特权授予您使用LOAD DATA INFILE和SELECT … INTO
OUTFILE语句以及LOAD_FILE()函数在服务器主机上读写文件的权限。具有FILE特权的用户可以读取服务器主机上世界上可读的或MySQL服务器可读的任何文件。(这意味着用户可以读取任何数据库目录中的任何文件,因为服务器可以访问任何这些文件。)

因此,FILE特权是 全局 特权。它会影响服务器上的所有文件,并且仅允许访问全局命令(例如LOAD DATA INFILE等等),而不能访问任何数据库。授予FILE特权的唯一方法是使用以下语法在所有数据库上:

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


 类似资料:
  • 问题内容: 我已经创建了数据库,例如’mydb’。 现在,我可以从任何地方登录数据库,但是无法创建表。 如何授予该数据库和(将来)表的所有特权。我无法在“ mydb”数据库中创建表。我总是得到: 问题答案: 这就是我创建“超级用户”特权的方式(尽管我通常会指定一个主机)。 虽然此答案可以解决访问问题,但可以创建一个MySQL用户,该用户可以编辑其他用户的权限。 使用GRANT OPTION特权,您

  • 如有任何帮助,我们将不胜感激。

  • 我的Azure Functions应用程序应使用Excel输入/输出绑定。这些文件存储在特定的sharepoint文档库中。我希望使用应用程序权限,而不是用户委托的权限。 图表留档里有这个 文件夹。读写。全部的 这对我来说太宽了。是否可以将范围缩小到特定sharepoint中的特定文件夹? 干杯干杯

  • 问题内容: 我是Redis的新手,但是有一个与备份有关的问题。 现在,我有一个实例在Windows服务器上运行。在此实例内部,我目前有一个“作业”,可将数据存储在一个数据库中。我不希望备份这些数据。 我必须创造一份新工作。我的第一个想法是将数据存储在另一个数据库中,但是在同一实例上。然后,我将在此数据库ID上激活RDB备份。 但是,当我阅读redis文档时,会看到以下命令进行备份: 此命令仅备份当

  • 我想在不使其成为管理员的情况下授予用户数据库的所有权限。我想这样做的原因是目前DEV和PROD是同一集群上的不同DBs,因此我不希望用户能够更改生产对象,但它必须能够更改DEV上的对象。 我尝试了: 但它似乎没有给予任何许可。 然后我尝试: 它似乎允许我创建对象,但不允许我在属于其他用户的模式上查询\delete对象 我可以继续通过给予用户USAGE权限MY_SCHEMA但它会抱怨没有在表上的权限

  • 我想从每个主机向用户授予select权限,但如果出现错误,则不允许创建用户 mysql 错误1410(42000):不允许使用GRANT创建用户 我不想创建新用户,因为我使用了命令create user 我试图创建一个新用户,但grant命令也失败了。