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 ?

Comment accorder tous les privilèges à une base de données MySQL, à l'exception d'une seule table ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 19:50:03869parcourir

How to Grant All Privileges to a MySQL Database Except for a Single Table?

Comment accorder tous les privilèges à une base de données MySQL à l'exception d'une seule table

Question :

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.

Réponse :

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é.

Solution :

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 :

  1. 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>
  2. Exécutez la requête SELECT CONCAT pour générer les instructions GRANT.
  3. Collez les instructions générées dans votre client MySQL et exécutez-les.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn