Você pode ter que hackear usando tabelas de esquema mysql para fazer as doações que você precisa:
Primeiro de tudo, aqui está a descrição do mysql.tables_priv
mysql> show create table mysql.tables_priv\G
*************************** 1. row ***************************
Table: tables_priv
Create Table: CREATE TABLE 'tables_priv' (
'Host' char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
'Db' char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
'User' char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
'Table_name' char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
'Grantor' char(77) COLLATE utf8_bin NOT NULL DEFAULT '',
'Timestamp' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
'Table_priv' set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') CHARACTER SET utf8 NOT NULL DEFAULT '',
'Column_priv' set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '',
PRIMARY KEY ('Host','Db','User','Table_name'),
KEY 'Grantor' ('Grantor')
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Table privileges'
1 row in set (0.00 sec)
mysql>
Você pode ter que reunir todos os bancos de dados que possuem mytable e anexar a string '.mytable'
SELECT CONCAT(table_schema,'.',table_name) my_table
FROM information_schema.tables WHERE table_name = 'mytable';
Em seguida, pegue essa lista e crie a concessão adequada para essa lista de tabelas para cada usuário específico
SELECT CONCAT('GRANT ALL PRIVILEGES ON ',my_table,' TO ',userhost,';') SQLGrantCommand
FROM
(
SELECT CONCAT('''',user,'''.''',host,'''') userhost
FROM mysql.user WHERE user NOT IN ('','root')
) user_list,
(
SELECT CONCAT(table_schema,'.',table_name) my_table
FROM information_schema.tables WHERE table_name = 'mytable';
) table_list;
Você deve pegar essa consulta e exportá-la para um arquivo de texto chamado /root/GlobalTableGrants.sql
mysql -uroot -A --skip-column-names -e"SELECT CONCAT('GRANT ALL PRIVILEGES ON ',my_table,' TO ',userhost,';') SQLGrantCommand FROM (SELECT CONCAT('''',user,'''.''',host,'''') userhost FROM mysql.user WHERE user NOT IN ('','root')) user_list,(SELECT CONCAT(table_schema,'.',table_name) my_table FROM information_schema.tables WHERE table_name = 'mytable') table_list" > /root/GlobalTableGrants.sql
Agora é só entrar no mysql para executar esse script
mysql> source /root/GlobalTableGrants.sql
Depois de executar o script, faça isso
SELECT * FROM mysql.tables_priv WHERE table_name = 'mytable'\G
Você deve ver todas as ocorrências de my_table com os privs de nível de tabela ativados.
Experimente!