Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kopiuj uprawnienia użytkownika między bazami danych na tym samym serwerze

Wszystkie nadane uprawnienia są przechowywane w tabelach systemowych, m.in. - mysql.tables_priv, mysql.columns_priv, mysql.db... Możesz napisać skrypt kopiujący wszystkie potrzebne uprawnienia.

Załóżmy, że mamy użytkownika -

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

Teraz skopiujemy te uprawnienia, aby mieć dostęp do bazy danych '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;

Zrób to samo dla innych tabel systemowych.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdź przecięcia między wierszami i znacznikami czasu w bazie danych mysql

  2. ningx, uwsgi, python stały błąd mysql po pewnym czasie od uruchomienia aplikacji

  3. Wiele COUNT() dla wielu warunków w jednym zapytaniu (MySQL)

  4. Mysql Dołącz do dwóch stołów na klawiszach

  5. Jak za pomocą SQL przekształcić dane pionowe w dane poziome?