J'ai un ensemble de bases de données sous un utilisateur db unique qui peut faire une déclaration de sélection sur chaque table de toutes les bases de données. Mais maintenant je ne peux pas définir une procédure de magasin qui peut faire une déclaration select sur l'autre table de base de données. Par exemple, je pourrais avoir un utilisateur 'joe' et j'ai quatre bases de données 'joe_database', 'mirko_database', 'carlo_database' et 'william_database'. joe ne possède que joe_database mais il peut choisir parmi les autres.MySql - appel sélectionner sur autre base de données que la procédure de magasin utilisateur
Par exemple Joe peut:
SELECT * FROM mirko_database;
Mais si Joe définit:
CREATE PROCEDURE call_select(IN db_name VARCHAR(50))
BEGIN
SET @query_base = 'SELECT * FROM $_database_$.any_table;'
SET @query_base = REPLACE(@query_base, '$_database_$', db_name);
PREPARE _lquery FROM @query_base;
EXECUTE _lquery;
DEALLOCATE PREPARE _lquery;
END;
et Joe fait:
CALL call_select('mirko_database');
Il obtient cette erreur:
SELECT command denied to user 'joe'@'localhost' for table 'any_table'
Comment puis-je accorder des privilèges à joe pour lui permettre d'appeler des procédures de stockage sur toutes les bases de données?
Merci