mysql - GRANT USAGE to @user'%' 是否可以为特定列表工作?

标签 mysql sql admin

这里是 mysql 的新手。

我在 mysql 中创建了一个名为“productes”的数据库,“productos”是数据库表之一。

Productos 有以下列:

  CREATE TABLE Productos
  (
   IdProducto           INT NOT NULL AUTO_INCREMENT,
   NombreProducto       CHAR(40) NOT NULL,
   IdProveedor          INT,
   IdCategoria          INT,
   PrecioUnidad         DECIMAL(20,4),
   UnidadesEnExistenci  SMALLINT,
   Suspendido           TINYINT,
   KEY (IdCategoria),
   KEY (IdCategoria),
   KEY (IdProveedor),
   KEY (NombreProducto),
   PRIMARY KEY (IdProducto),
   KEY (IdProveedor)
  );

我尝试以 root 用户身份从命令行执行的操作如下:

mysql>GRANT USAGE (PrecioUnidad) ON productes.productos TO pepe@'%' IDENTIFIED BY            
      'pepe';

(即拒绝从所有域计算机对用户“pepe”的所有访问,以访问表 productos 的列“PrecioUnidad”)

我得到一个错误(ERROR 1064)说我的语法有错误。

我想授予表中其余列的权限并排除特定的列以获得所需的结果,但我认为也许还有另一种方法。

所以我的问题是这个:是否可以将授权使用应用于特定的列表,而我只是在这里遗漏了一些东西,或者是否有另一种方法可以仅禁止一个列表的所有权限?

最佳答案

您可以创建一个包含除 PrecioUnidad 之外的所有列的 View ,然后授予(允许)pepe 访问该 View 的权限。

CREATE VIEW pepes_productos AS
 SELECT 
  IdProducto,
  NombreProducto,
  IdProveedor,
  IdCategoria,
  UnidadesEnExistenci,
  Suspendido  
 FROM productos

关于mysql - GRANT USAGE to @user'%' 是否可以为特定列表工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385913/

相关文章:

php - 为什么我无法访问我的管理界面?

linux - 未找到 aireplay-ng 命令

mysql - 设计一个具有多个参数和 HAVING LIKE 的存储过程

mySQL 右外连接

mysql - 如何将多个转储文件导入到 windows 中的 mysql?

mysql - 从表中找一个至少在这些技术[reactjs, mysql, express] 上工作过的人

php - 根据所选月份动态显示 SQL COUNT

sql - 如何从 SQL Server 中的字符串中删除最后一个符号。如果它是一个循环

django - 在 Django Admin 中对内联内的字段进行排序

mysql - Logparser 输出到 SQL,生成空字符串和最大值整数