sql >> Databáze >  >> RDS >> Mysql

Zkopírujte uživatelská oprávnění mezi databázemi na stejném serveru

Všechna udělená oprávnění jsou uložena v systémových tabulkách, např. - mysql.tables_priv, mysql.columns_priv, mysql.db... Můžete napsat skript, který zkopíruje všechna potřebná oprávnění.

Předpokládejme, že máme uživatele -

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

Nyní zkopírujeme tato oprávnění, abychom měli přístup k databázi '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;

Udělejte totéž pro další systémové tabulky.




  1. Maximální využití paměti MySQL

  2. PHP a MySQL:Počet vrácených řádků

  3. Mysql Převést sloupec na řádek (kontingenční tabulka)

  4. pomocí výzvy prohlížeče ke stažení souboru