Mysql
 sql >> база данни >  >> RDS >> Mysql

Копиране на потребителски привилегии между бази данни на един и същ сървър

Всички предоставени привилегии се съхраняват в системни таблици, напр. - mysql.tables_priv, mysql.columns_priv, mysql.db... Можете да напишете скрипт, за да копирате всички привилегии, от които се нуждаете.

Да предположим, че имаме потребител -

CREATE USER 'user1'@'%';
GRANT Insert ON TABLE database1.table1 TO 'user1'@'%';
GRANT Execute ON PROCEDURE database1.procedure1 TO 'user1'@'%';

Сега ще копираме тези привилегии, за да имаме достъп до база данни 'database2' -

-- Copy table's privileges
INSERT INTO mysql.tables_priv SELECT host, 'database2', user, table_name, grantor, timestamp, table_priv, column_priv FROM mysql.tables_priv
  WHERE user = 'user1' AND host = '%' AND db = 'database1';

-- Copy routine's privileges
INSERT INTO mysql.procs_priv SELECT host, 'database2', user, routine_name, routine_type, grantor, proc_priv, timestamp FROM mysql.procs_priv
  WHERE user = 'user1' AND host = '%' AND db = 'database1';

-- Do not forget to apply changes ;-)
FLUSH PRIVILEGES;

Направете същото за други системни таблици.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. АКТУАЛИЗИРАНЕ на всички стойности на колони, еквивалентни на стойността на колона от друга таблица въз основа на техния идентификатор

  2. определяне на най-използвания набор от думи php mysql

  3. Може ли Mysql да раздели колона?

  4. Грешка:Невалиден PathExpression. Трябва да е StateFieldPathExpression, който се проваля при избор на поле

  5. Как да експортирате база данни с помощта на командния ред