Désolé beaucoup d'erreurs de ma part. La syntaxe correcte est effectivement
nom_de_la_base.nom_de_la_table et non l'inverse et les guillemets ne sont pas correctement placés. Je corrige donc :
GRANT SELECT ON database.* TO 'utilisateur'@'localhost';
et
REVOKE SELECT ON database.table1 FROM 'utilisateur'@'localhost';
Je viens de tester et effectivement cela n'a pas l'air aussi simple. La seconde commande échoue avec l'erreur que tu indiques. Je suppose que c'est parce que MySQL considère que le privilège
SELECT est accordé au niveau de la base de données et non des tables individuellement par la première commande.
De ce fait je n'ai pas d'autre solution que de supprimer les privilèges :
REVOKE SELECT ON database.* TO 'utilisateur'@'localhost';
puis de répéter la commande pour chaque table :
GRANT SELECT ON database.table1 TO 'utilisateur'@'localhost';
Il y a sûrement une solution avec un requête SQL complexe mais je ne vois pas vraiment comment faire.