这里的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),说我的语法错误。
我想将权限授予表的其余列并排除特定的列以获得所需的结果,但我认为可能还有另一种方法。
所以我的问题是这个:可以为特定的列表授予使用权限,我只是在这里遗漏了一些东西,或者是否有另一种方法来禁止只有一列的所有权限桌子?
答案 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