
Ich habe gerade eine sehr seltsame Situation auf meinem Entwicklungsrechner festgestellt: Die Datenbank ist in PHPMyAdmin aufgeführt, aber ohne Tabellen. Neugierig geworden, öffnete ich einen mysql
Client in der Befehlszeile und siehe da:
mysql> CREATE DATABASE somedb;
ERROR 1007 (HY000): Can't create database 'somedb'; database exists
mysql> DROP DATABASE somedb;
ERROR 1008 (HY000): Can't drop database 'somedb'; database doesn't exist
Ich verwende Arch Linux und habe das XAMPP-Paket aus dem AUR installiert; die MySQL-Installation kommt von dort. Vielleicht habe ich beim Einrichten eines neuen virtuellen Hosts etwas vermasselt, oder auch nicht, aber auf jeden Fall weiß ich überhaupt nicht, was los ist.
Kann jemand Licht ins Dunkel bringen?
UPDATE: Ich habe versucht, den mysql
Server neu zu starten, aber jetzt weigert er sich, wieder zu starten. Ich werde mir die Protokolle ansehen. Hier ist der relevante Teil:
/opt/lampp/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
130109 15:16:13 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130109 15:16:13 InnoDB: The InnoDB memory heap is disabled
130109 15:16:13 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
130109 15:16:13 InnoDB: Compressed tables use zlib 1.2.3
130109 15:16:13 InnoDB: Initializing buffer pool, size = 16.0M
130109 15:16:13 InnoDB: Completed initialization of buffer pool
130109 15:16:13 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name /opt/lampp/var/mysql/ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
130109 15:16:13 mysqld_safe mysqld from pid file /opt/lampp/var/mysql/hostname.pid ended
Antwort1
Nachdem ich die Protokolldatei gelesen hatte, wurde mir klar, dass der mysqld-Server nicht unter dem richtigen Benutzer ausgeführt wurde. Ursprünglich war er so konfiguriert, dass er als Benutzer ausgeführt wurde, nobody
aber ich hatte vor Kurzem den Apache-Benutzer in geändert someuser
und dann chown
das gesamte /opt/lampp
Verzeichnis auf den Benutzer umgestellt. Allerdings hatte ich den entsprechenden Eintrag in nicht geändert my.cnf
. Das hat das Problem behoben.
Für alle, die in Zukunft in diese seltsame Situation geraten: Die Protokolle sind da /opt/lampp/var/mysql/your-hostname.err
. Sie zu finden war eigentlich der schwierigste Teil! :)