Tom: MySQL Rechte ändern mit GRANT

Hello,

ich bin etwas eingerostet.
Wenn ich für eine MySQL-Datenbank oder Tabelle für einen einzelnen User die spezifischen Rechte ändern will (welche hinzufügen) mit GRANT, muss ich dann im Grant-Statement alle bereits vorhandenen Rechte wieder mit aufführen, oder gibt es eine Möglichkeit, nur einzelne Rechte hinzuzugügen (oder auch zu entziehen)?

Ich habe mir das Kapitel [link_http://dev.mysql.com/doc/refman/5.1/de/grant.html] zwar gerade nochmal durchgeschaut, kann da ber nix zumÄndern von Rechten finden, oder habe es mehrfach überlesen...

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://restaurant-zur-kleinen-kapelle.de
  1. Mahlzeit,

    ich bin etwas eingerostet.

    deshalb hast du vermutlich die entsprechende Tabelle nicht angesehen ;)

    oder gibt es eine Möglichkeit, nur einzelne Rechte hinzuzugügen (oder auch zu entziehen)?

    Jedes Recht hat eine eigene Spalte, also kannst du auch Werte einzeln setzen. GRANT kann das nicht, soweit ich weiss, aber ein UPDATE schon.

    --
    42
  2. Tach!

    ich bin etwas eingerostet.
    Wenn ich für eine MySQL-Datenbank oder Tabelle für einen einzelnen User die spezifischen Rechte ändern will (welche hinzufügen) mit GRANT, muss ich dann im Grant-Statement alle bereits vorhandenen Rechte wieder mit aufführen, oder gibt es eine Möglichkeit, nur einzelne Rechte hinzuzugügen (oder auch zu entziehen)?

    Kurz mal geschaut, wie der phpMyAdmin das macht: Er macht ein REVOKE ALL PRIVILEGES und setzt dann alles neu. Zweiter Versuch: Ein SELECT angehakt und dann den ausgeführten GRANT SELECT ON ... editiert zu GRANT INSERT ON ... zeigt, dass nun beides vorhanden ist, GRANT also hinzufügend arbeitet.

    dedlfix.

    1. Hello Dedlfix,

      Wenn ich für eine MySQL-Datenbank oder Tabelle für einen einzelnen User die spezifischen Rechte ändern will (welche hinzufügen) mit GRANT, muss ich dann im Grant-Statement alle bereits vorhandenen Rechte wieder mit aufführen, oder gibt es eine Möglichkeit, nur einzelne Rechte hinzuzugügen (oder auch zu entziehen)?

      Kurz mal geschaut, wie der phpMyAdmin das macht: Er macht ein REVOKE ALL PRIVILEGES und setzt dann alles neu. Zweiter Versuch: Ein SELECT angehakt und dann den ausgeführten GRANT SELECT ON ... editiert zu GRANT INSERT ON ... zeigt, dass nun beides vorhanden ist, GRANT also hinzufügend arbeitet.

      Danke für den Tipp. Werde ich gleich mal an einer Üungstabelle ausprobieren :-)
      Das erspart doch eine Menge Tipparbeit.

      Aber dann habe ich das bestimmt in der Seite überlesen
      http://dev.mysql.com/doc/refman/5.1/de/grant.html

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://restaurant-zur-kleinen-kapelle.de
    2. Hello,

      also soweit funktioniert das.

      mysql> show grants for web;
      +----------------------------------------------------------------------------------------------------+
      | Grants for web@%                                                                                   |
      +----------------------------------------------------------------------------------------------------+
      | GRANT USAGE ON *.* TO 'web'@'%' IDENTIFIED BY PASSWORD '*B60B21A5A4AD505ECF293D9C1CCCDC89A836619C' |
      | GRANT SELECT, INSERT, UPDATE, DELETE ON kapelle.* TO 'web'@'%'                                   |
      +----------------------------------------------------------------------------------------------------+

      Da werden dann aber alle Rechte des Users angezeigt, die er in der gesamten Datenbank hat. Ich vermute, dass sich das dann sogar auf alle Datenbanken des Servers bezieht?

      Weitere Einschränkungen, z.B. auf einzelne Tabellen, habe ich bisher nicht hinbekommen, lediglich auf Spielarten des Users:

      mysql> show grants for 'web'@'localhost';
      ERROR 1141 (42000): There is no such grant defined for user 'web' on host 'localhost'

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://restaurant-zur-kleinen-kapelle.de
      1. Tach!

        mysql> show grants for web;
        +----------------------------------------------------------------------------------------------------+
        | Grants for web@%                                                                                   |
        +----------------------------------------------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'web'@'%' IDENTIFIED BY PASSWORD '*B60B21A5A4AD505ECF293D9C1CCCDC89A836619C' |
        | GRANT SELECT, INSERT, UPDATE, DELETE ON kapelle.* TO 'web'@'%'                                   |
        +----------------------------------------------------------------------------------------------------+
        Da werden dann aber alle Rechte des Users angezeigt, die er in der gesamten Datenbank hat. Ich vermute, dass sich das dann sogar auf alle Datenbanken des Servers bezieht?

        SHOW GRANTS zeigt von einem oder mehreren Nutzern die GRANT-Statements an, die zum Erstellen einer Kopie der Nutzerrechte benötigt werden. Die Aufgabe ist nicht, (auswertbare) Informationen bereitszustellen, welche Rechte der Nutzer hat.

        Weitere Einschränkungen, z.B. auf einzelne Tabellen, habe ich bisher nicht hinbekommen, lediglich auf Spielarten des Users:

        Probier es mit Abfragen auf die Pseudo-Datenbank INFORMATION_SCHEMA.

        dedlfix.