Може ли да работи GRANT USAGE на @user'%' за конкретна таблица с колони?

начинаещ в 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“ от всички машини на домейна до колоната „PrecioUnidad“ на таблицата productos )

И получих грешка (ГРЕШКА 1064), която казва, че имам грешка в моя синтаксис.

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

И така, въпросът ми е следният: Може ли използването на разрешение да се приложи за конкретна таблица с колони и просто пропускам нещо тук, или има друг начин да забраня всички привилегии само за една таблица с колони?


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


Отговори (2)


Можете да създадете изглед с всички колони освен PrecioUnidad и след това да предоставите (разрешите) достъп на pepe до този изглед.

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) НА mydb.mytbl НА '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-privileges

person exussum    schedule 13.03.2014