web-dev-qa-db-fra.com

Autorisations de procédure stockée MySQL

J'essaie de donner à un utilisateur la permission d'exécuter une procédure stockée au niveau de la procédure stockée sur une base de données MySQL plutôt que de permettre à un utilisateur d'exécuter une procédure stockée dans la base de données. J'essayais d'exécuter le code suivant:

GRANT EXECUTE ON myDB.spName TO 'TestUser'@'localhost';

Mais je reçois toujours l'erreur suivante:

Illegal GRANT/REVOKE command, please consult the manual to see which privileges can be used.

J'ai essayé de le changer comme suit:

GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';

Et je reçois une erreur différente indiquant:

Cant find any matching rows in the user table.

Je ne sais pas où je vais mal?

De plus, sur MySQL Workbench, je n'arrive pas à voir de moyen d'accorder des autorisations au niveau de la procédure stockée via l'interface graphique. Est-ce correct ou ai-je raté quelque chose?

Merci d'avance.

20
Olly

Votre deuxième tentative est la bonne approche:

GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';

mais si cela ne fonctionne pas, vérifiez ...

a) vous (l'utilisateur à partir duquel vous exécutez toutes ces commandes) avez des droits d'accord [c'est-à-dire AVEC GRANT OPTION]. Si vous êtes root, vous disposez de droits de licence.

b) l'utilisateur existe auquel vous accordez l'autorisation d'exécution, par exemple.

 select user from mysql.user where user  like  'test%';

Sinon, créez l'utilisateur par ex.

CREATE USER 'TestUser'@'localhost' IDENTIFIED BY 'passwordxxxx';
#depending on your needs
GRANT SELECT,DELETE,UPDATE PRIVILEGES ON myDb.* TO 'TestUser'@'localhost'; 

J'espère que cela t'aides :)

33
sakhunzai

Pour répondre à l'autre partie de votre question concernant MySQL Workbench, j'avais le même problème. Mais après avoir expérimenté, j'ai découvert que si vous créez un rôle et ouvrez l'onglet des privilèges en bas, vous pouvez ensuite faire glisser la routine de l'aperçu du modèle dans la zone des objets. De là, cliquez simplement sur l'objet nouvellement ajouté et ajoutez les autorisations que vous souhaitez pour ce rôle.

J'espère que cela pourra aider :)

2
Shane E. Bryan