Может ли работать ПРЕДОСТАВЛЕНИЕ ИСПОЛЬЗОВАНИЯ @user'%' для конкретной таблицы столбцов?

новичок в mysql здесь.

У меня есть база данных, созданная в mysql под названием «productes», а «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» со всех компьютеров домена к столбцу «PrecioUnidad» таблицы productos )

И я получил сообщение об ошибке (ОШИБКА 1064), говорящее, что у меня есть ошибка в моем синтаксисе.

Я думал предоставить привилегии остальным столбцам таблицы и исключить конкретный, чтобы получить желаемый результат, но я подумал, что, возможно, есть другой способ.

Итак, мой вопрос этот: можно ли применить разрешение на использование для определенной таблицы столбцов, и я просто что-то здесь упускаю, или есть другой способ запретить все привилегии только для одной таблицы столбцов?


person Menios    schedule 13.03.2014    source источник


Ответы (2)


Вы можете создать представление со всеми столбцами, кроме PrecioUnidad, а затем предоставить (разрешить) доступ к этому представлению.

CREATE VIEW pepes_productos AS
 SELECT 
  IdProducto,
  NombreProducto,
  IdProveedor,
  IdCategoria,
  UnidadesEnExistenci,
  Suspendido  
 FROM productos
person sqlab    schedule 13.03.2014

Из руководства по Mysql

Привилегии столбца

Привилегии столбца применяются к отдельным столбцам в данной таблице. За каждой привилегией, предоставляемой на уровне столбца, должен следовать столбец или столбцы, заключенные в круглые скобки.

GRANT SELECT (col1), INSERT (col1, col2) ON mydb.mytbl TO 'someuser'@'somehost'; Допустимыми значениями priv_type для столбца (то есть при использовании предложения column_list) являются INSERT, SELECT и UPDATE.

MySQL хранит привилегии столбца в таблице mysql.columns_priv.

http://dev.mysql.com/doc/refman/5.1/en/grant.html#grant-column-привилегии

person exussum    schedule 13.03.2014