对特定列表的@ user'%'可以使用GRANT USAGE吗?

时间:2014-03-13 17:08:46

标签: 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';

(即拒绝所有域名计算机上的所有用户访问权限,以及表格产品的列#PrecioUnidad'

我收到错误(ERROR 1064),说我的语法错误。

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

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

2 个答案:

答案 0 :(得分:2)

您可以使用 PrecioUnidad 创建包含所有列的视图,然后授予(允许)pepe访问该视图的权限。

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

答案 1 :(得分:2)

从Mysql手册

  

列权限

     

列权限适用于给定表中的单个列。每   在列级别授予的特权必须后跟   一列或多列,括在括号内。

     

GRANT SELECT(col1),INSERT(col1,col2)ON mydb.mytbl TO   'SomeUser是否' @ '某';列的允许priv_type值   (即,当您使用column_list子句时)是INSERT,SELECT和   UPDATE。

     

MySQL将列权限存储在mysql.columns_priv表中。

http://dev.mysql.com/doc/refman/5.1/en/grant.html#grant-column-privileges