MySQL: 'show tables' funktioniert nicht

Dieses Thema im Forum "Datenbanksysteme für das Web" wurde erstellt von msslovi0, 04.02.2006.

  1. msslovi0

    msslovi0 Thread Starter MacUser Mitglied

    Beiträge:
    2.713
    Zustimmungen:
    115
    MacUser seit:
    20.03.2005
    Hi!

    Ich muss an einem Webauftritt Änderungen vornehmen und musste feststellen, das in MySQL 'show tables' nicht funktioniert. Bevor jetzt jemand fragt, was ich damit will: phpMyAdmin nutzt das, um die Tabellen einer Datenbank auszulesen und das funktioniert ohne 'show tables' natürlich nicht.

    Code:
    mysql> use database;
    Database changed
    mysql> show tables;
    Empty set (0.00 sec)
    
    mysql>   
    
    Die Tabellen sind aber da, lassen sich auch ansprechen und abfragen:
    Code:
    mysql> show fields from table; 
    +-----------------------+--------------------------+------+-----+---------------------+----------------+
    | Field                 | Type                     | Null | Key | Default             | Extra          |
    +-----------------------+--------------------------+------+-----+---------------------+----------------+
    | id                    | int(8) unsigned zerofill |      | PRI | NULL                | auto_increment |  
    [...]
    +-----------------------+--------------------------+------+-----+---------------------+----------------+
    57 rows in set (1.33 sec) 
    
    Ein Neustart des MySQL-Servers bring keine Besserung. Irgend jemand ne Idee?

    Matt
     
  2. baumschubser

    baumschubser MacUser Mitglied

    Beiträge:
    21
    Zustimmungen:
    0
    MacUser seit:
    15.01.2005
    Könnte es an den Rechten des Nutzer liegen, mit dem Du auf die DB zugreifst ? Meines Wissens läßt sich 'SHOW TABLES' deaktivieren.
     
  3. msslovi0

    msslovi0 Thread Starter MacUser Mitglied

    Beiträge:
    2.713
    Zustimmungen:
    115
    MacUser seit:
    20.03.2005
    Ich greife mit dem root-User zu...

    Matt
     
  4. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    MacUser seit:
    15.03.2004
    dumme Frage: existieren denn überhaupt Tabellen in der Datenbank "database"?
    Denn die Ausgabe lautet ja "empty set" und nicht "permission denied".

    teste mal ein
    Code:
    use mysql;
    SHOW TABLES;
    
    PS: ich weiß nicht so genau ob es sinnvoll ist eine Datenbank "database" und eine Tabelle "table" zu nennen. Sind ja schließlich Begriffe aus SQL
     
  5. msslovi0

    msslovi0 Thread Starter MacUser Mitglied

    Beiträge:
    2.713
    Zustimmungen:
    115
    MacUser seit:
    20.03.2005
    Ja, natürlich existieren Tabellen.
    Code:
    mysql> use mysql
    Database changed
    mysql> show tables;
    Empty set (0.00 sec)
    
    mysql> show fields from db;
    +-----------------+---------------+------+-----+---------+-------+
    | Field           | Type          | Null | Key | Default | Extra |
    +-----------------+---------------+------+-----+---------+-------+
    | Host            | binary(60)    |      | PRI |         |       |
    | Db              | binary(64)    |      | PRI |         |       |
    | User            | binary(16)    |      | PRI |         |       |
    | Select_priv     | enum('N','Y') |      |     | N       |       |
    | Insert_priv     | enum('N','Y') |      |     | N       |       |
    | Update_priv     | enum('N','Y') |      |     | N       |       |
    | Delete_priv     | enum('N','Y') |      |     | N       |       |
    | Create_priv     | enum('N','Y') |      |     | N       |       |
    | Drop_priv       | enum('N','Y') |      |     | N       |       |
    | Grant_priv      | enum('N','Y') |      |     | N       |       |
    | References_priv | enum('N','Y') |      |     | N       |       |
    | Index_priv      | enum('N','Y') |      |     | N       |       |
    | Alter_priv      | enum('N','Y') |      |     | N       |       |
    +-----------------+---------------+------+-----+---------+-------+
    13 rows in set (0.00 sec)
    
    mysql> 
    
    Matt
     
  6. msslovi0

    msslovi0 Thread Starter MacUser Mitglied

    Beiträge:
    2.713
    Zustimmungen:
    115
    MacUser seit:
    20.03.2005
    Das war natürlich nur zu Demozwecken. Die heißen in Wirklichkeit schon anders, keine Angst ;-)

    Matt
     
  7. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    MacUser seit:
    15.03.2004
    Das ist dann in der Tat sehr merkwürdig.

    kannst du mal ein "SELECT * FROM mysql.user WHERE user='admin'" machen, möglicherweise musst du "admin" durch "root" ersetzen.

    bei mir sieht das Ergebnis so aus:
    Code:
    +-----------+-------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+
    | Host      | User  | Password         | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections |
    +-----------+-------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+
    | localhost | admin | xxxxxxxxxxxx     | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                |          |            |             |              |             0 |           0 |               0 |
    +-----------+-------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+
    1 row in set (0.00 sec)
    
    vielleicht fehlen deinem Benutzer ja ein paar Rechte.
     
  8. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    MacUser seit:
    15.03.2004
    Alternativ könntest du mal folgendes versuchen:

    Einen neuen Benutzer mit
    Code:
    GRANT ALL ON *.* TO root2 IDENTIFIED BY "root-passwort" WITH GRANT OPTION;
    
    anlegen und dann noch ein
    Code:
    FLUSH PRIVILEGES;
    
    um die Rechte neu einzulesen.

    Danach das ganze nochmal mit dem neuen Benutzer "root2" testen.

    Gunter
     
  9. msslovi0

    msslovi0 Thread Starter MacUser Mitglied

    Beiträge:
    2.713
    Zustimmungen:
    115
    MacUser seit:
    20.03.2005
    Es macht keinen Unterschied ob root oder admin connecten. admin hatte ich vorher selbst manuell angelegt (alle Privilegien, allerdings ohne den Flush, der ist bei GRANT nicht notwendig), root ist der eigentliche root-User. Bei beiden sind keine Tabellen zu sehen, Rechte sind alle da, in keiner Spalte steht ein 'N'...
    Und es ging ja mal :confused:

    Matt
     
  10. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    MacUser seit:
    15.03.2004
    Vielleicht sind die gespeicherten Daten auf der Festplatte korrupt!?
    Also dass keine Liste von Tabellen mehr erzeugt werden kann, aber ein direkter Sprung zu einer Tabelle noch funktioniert.
    Es müsste doch eigentlich eine Testroutine von MySQL geben um die Daten zu prüfen, bzw. ggf. zu reparieren.

    Gunter
     
Die Seite wird geladen...

Diese Seite empfehlen