Maison >base de données >tutoriel mysql >Comment accorder tous les privilèges à une base de données MySQL, à l'exception d'une seule table ?
Les utilisateurs recherchent une solution pour permettre à un utilisateur d'avoir un accès complet à une base de données sauf pour une table particulière, où il ne devrait avoir que les privilèges SELECT.
Malgré les tentatives d'accorder tous les privilèges sur la base de données puis accordez spécifiquement uniquement les privilèges SELECT sur la table souhaitée, ou pour révoquer les privilèges d'insertion, de mise à jour et de suppression, des erreurs ont persisté.
Génération de déclaration d'octroi dynamique :
Pour simplifier le processus, vous pouvez utiliser la requête SELECT CONCAT suivante pour générer les instructions GRANT nécessaires :
<code class="sql">SELECT CONCAT("GRANT UPDATE ON db.", table_name, " TO user@localhost;") FROM information_schema.TABLES WHERE table_schema = "YourDB" AND table_name <> "table_to_skip";</code>
Étapes :
Révoquer tous les privilèges de l'utilisateur sur la base de données :
<code class="sql">REVOKE ALL PRIVILEGES ON db.* FROM user@localhost; </code>
Exemple :
REVOKE ALL PRIVILEGES ON my_db.* FROM my_user@localhost; SELECT CONCAT("GRANT UPDATE ON my_db.", table_name, " TO my_user@localhost;") FROM information_schema.TABLES WHERE table_schema = "my_db" AND table_name <> "special_table";
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!