steckl: mySql: Berechtigungsproblem

Hallo,

ich habe ein Problem mit einer Datenbank.

hier sind mal die (wie ich denke) relevanten Tabellen mit den Rechten (etwas gekuerzt):

tables_priv:
+-----------+-----------------+----------+------------+----------------+---------------------+---------------+-------------+
| Host      | Db              | User     | Table_name | Grantor        | Timestamp           | Table_priv    | Column_priv |
+-----------+-----------------+----------+------------+----------------+---------------------+---------------+-------------+
| %         | FORCUSTdb       | customer | USERtab    | root@localhost | 2006-07-18 19:43:42 | Select,Update |             |
| localhost | FORCUSTdb       | customer | USERtab    | root@localhost | 2006-07-28 12:03:02 | Select,Update |             |
| cis       | FORCUSTdb       | customer | USERtab    | root@localhost | 2006-07-28 12:18:47 | Select,Update |             |
| localhost | custAccessLogDB | customer | ACCESStab  | root@localhost | 2006-09-21 15:51:54 | Select,Insert |             |
| cis       | custAccessLogDB | customer | ACCESStab  | root@localhost | 2006-09-21 15:51:54 | Select,Insert |             |
| %         | custAccessLogDB | customer | ACCESStab  | root@localhost | 2006-09-21 15:51:54 | Select,Insert |             |
+-----------+-----------------+----------+------------+----------------+---------------------+---------------+-------------+
db:
+-----------+-----------------+----------+-------------+-------------+-------------+-------------+
| Host      | Db              | User     | Select_priv | Insert_priv | Update_priv | Delete_priv |
+-----------+-----------------+----------+-------------+-------------+-------------+-------------+
| %         | test            |          | Y           | Y           | Y           | Y           |
| %         | test\_%         |          | Y           | Y           | Y           | Y           |
| %         | FORCUSTdb       | customer | Y           | N           | N           | N           |
| localhost | FORCUSTdb       | customer | Y           | N           | N           | N           |
| cis       | FORCUSTdb       | customer | Y           | N           | N           | N           |
| cis       | custAccessLogDB | customer | Y           | Y           | N           | N           |
| %         | custAccessLogDB | customer | Y           | Y           | N           | N           |
| localhost | custAccessLogDB | customer | Y           | Y           | N           | N           |
+-----------+-----------------+----------+-------------+-------------+-------------+-------------+
user:
+-----------+----------+------------------+-------------+-------------+-------------+-------------+
| Host      | User     | Password         | Select_priv | Insert_priv | Update_priv | Delete_priv |
+-----------+----------+------------------+-------------+-------------+-------------+-------------+
| localhost | root     |                  | Y           | Y           | Y           | Y           |
| cis       | root     |                  | Y           | Y           | Y           | Y           |
| cis       |          |                  | N           | N           | N           | N           |
| localhost |          |                  | N           | N           | N           | N           |
| cis       | %        |                  | Y           | N           | N           | N           |
| %         | customer | 4d022c767b138015 | Y           | N           | N           | N           |
| localhost | customer | 4d022c767b138015 | Y           | N           | N           | N           |
| cis       | customer | 4d022c767b138015 | Y           | N           | N           | N           |
+-----------+----------+------------------+-------------+-------------+-------------+-------------+

ausserdem gibt es eine Datenbank custAccessLogDB mit den Tabellen ACCESStab und ACTIONtab. wenn ich mich als root anmelde sehe ich diese auch, aber wenn ich mich als Customer anmelde sehe ich sie nicht. Die Datenbank FORCUSTdb sehe ich dann aber komischerweise schon.
Eigentlich sollte man doch als customer mehr als genug Rechte haben, um zumindest die ACCESStab anzeigen zu lassen.
Ich hab wohl irgendwo eine kleinigkeit uebersehen?

mfG,
steckl

  1. echo $begrüßung;

    user:
    +-----------+----------+------------------+-------------+-------------+-------------+-------------+
    | Host      | User     | Password         | Select_priv | Insert_priv | Update_priv | Delete_priv |
    +-----------+----------+------------------+-------------+-------------+-------------+-------------+
    | %         | customer | 4d022c767b138015 | Y           | N           | N           | N           |
    | localhost | customer | 4d022c767b138015 | Y           | N           | N           | N           |
    | cis       | customer | 4d022c767b138015 | Y           | N           | N           | N           |
    +-----------+----------+------------------+-------------+-------------+-------------+-------------+

    Eigentlich sollte man doch als customer mehr als genug Rechte haben, um zumindest die ACCESStab anzeigen zu lassen.

    Dein customer hat ein globales SELECT-Recht. Das heißt, er kann sämtliche Daten selektieren. Die Einträge für localhost und cis kannst du dir sparen, denn die sind ja schon durch das % abgedeckt.

    Ich hab wohl irgendwo eine kleinigkeit uebersehen?

    Vielleicht sind die Rechte nur noch nicht wirksam. When Privilege Changes Take Effect

    echo "$verabschiedung $name";

    1. hi,

      +-----------+----------+------------------+-------------+-------------+-------------+-------------+

      | Host      | User     | Password         | Select_priv | Insert_priv | Update_priv | Delete_priv |
      +-----------+----------+------------------+-------------+-------------+-------------+-------------+
      | %         | customer | 4d022c767b138015 | Y           | N           | N           | N           |
      | localhost | customer | 4d022c767b138015 | Y           | N           | N           | N           |
      | cis       | customer | 4d022c767b138015 | Y           | N           | N           | N           |
      +-----------+----------+------------------+-------------+-------------+-------------+-------------+

      Eigentlich sollte man doch als customer mehr als genug Rechte haben, um zumindest die ACCESStab anzeigen zu lassen.

      Dein customer hat ein globales SELECT-Recht. Das heißt, er kann sämtliche Daten selektieren. Die Einträge für localhost und cis kannst du dir sparen, denn die sind ja schon durch das % abgedeckt.

      die beiden eintraege waeren aber sinnvoll, wenn der customer von cis aus z.B. noch insert privilegs bekommen wuerde, oder?
      welcher eintrag trifft zu, wenn ich auf dem selben rechner einen apache-server laufen habe, der per cgi/perl-script auf die Datenbank zugreift? hostname des rechners = cis.

      Ich hab wohl irgendwo eine kleinigkeit uebersehen?

      Vielleicht sind die Rechte nur noch nicht wirksam. When Privilege Changes Take Effect

      ahhhhhhh, ich bin so bloed. mir ist auch gerade nach stundenlangem rumprobieren aufgefallen, dass ich flush privileges vergessen habe -.- wollte es auch gerade hier posten. trotzdem vielen dank fuer deine hilfe.

      danke nochmals,
      steckl

      1. echo $begrüßung;

        Dein customer hat ein globales SELECT-Recht. Das heißt, er kann sämtliche Daten selektieren. Die Einträge für localhost und cis kannst du dir sparen, denn die sind ja schon durch das % abgedeckt.
        die beiden eintraege waeren aber sinnvoll, wenn der customer von cis aus z.B. noch insert privilegs bekommen wuerde, oder?

        Ja. MySQL sortiert die Einträge nach Spezifität. Das heißt ein vollständiger Hostname bzw. eine IP-Adresse ist spezifischer als Einträge mit Jokerzeichen und wird deshalb zuerst gefunden und verwendet. Siehe Access Control, Stage 1: Connection Verification - kurz nach der Tabelle.

        welcher eintrag trifft zu, wenn ich auf dem selben rechner einen apache-server laufen habe, der per cgi/perl-script auf die Datenbank zugreift? hostname des rechners = cis.

        Du meinst cis = localhost? Bei meinen Versuchen (SELECT CURRENT_USER();) hat immer localhost gewonnen. Ich kann mir aber durchaus vorstellen, dass localhost nur deshalb gewinnt, weil ich über eine Unix-Socket-Verbindung und nicht über TCP/IP verbunden bin.

        echo "$verabschiedung $name";

        1. hi,

          danke fuer die ausfuehrungen.

          mfG,
          steckl