sql >> Database >  >> RDS >> Mysql

Gebruikersrechten kopiëren tussen databases op dezelfde server

Alle toegekende privileges worden opgeslagen in systeemtabellen, b.v. - mysql.tables_priv, mysql.columns_priv, mysql.db... U kunt een script schrijven om alle benodigde rechten te kopiëren.

Stel we hebben gebruiker -

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

Nu zullen we deze rechten kopiëren om toegang te krijgen tot database '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;

Doe hetzelfde voor andere systeemtabellen.




  1. Niet de juiste COUNT() krijgen in MySQL-query (eerder gewijzigd)

  2. PHP gebruiken om een ​​HTML-tabel te maken van een MSQL-query, zonder dubbele rijen?

  3. Een offline app voor internationalisering maken:gebruik Sqlite-database

  4. Aankondiging van ClusterControl 1.7.5:geavanceerd clusteronderhoud en ondersteuning voor PostgreSQL 12 en MongoDB 4.2