MySQLデータベースは存在しないか存在しないかのどちらかです

MySQLデータベースは存在しないか存在しないかのどちらかです

開発マシンで非常に奇妙な状況に遭遇しました。データベースは PHPMyAdmin にリストされていますが、テーブルがありません。興味をそそられて、mysqlコマンド ラインでクライアントを開いてみると、なんと次のようになりました。

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

私は Arch Linux を実行しており、AUR から Xampp パッケージをインストールしました。MySQL のインストールはそこから行われます。新しい vhost を設定しているときに何かを間違えたのかもしれませんが、いずれにしても何が起こっているのか全くわかりません。

誰かこれについて説明できますか?

更新:mysqlサーバーを再起動しようとしましたが、再起動できなくなりました。ログを確認します。関連部分は次のとおりです。

/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

答え1

ログ ファイルを読んだ後、mysqld サーバーが適切なユーザーとして実行されていないことに気付きました。 当初は ユーザーとして実行するように構成されていましたnobodyが、最近 Apache ユーザーを に変更しsomeuser、ディレクトリchown全体を/opt/lamppユーザーに変更しました。 ただし、 の適切なエントリを変更していませんでしたmy.cnf。 これで問題は解決しました。

今後、この奇妙な状況に遭遇する人のために: ログは にあります/opt/lampp/var/mysql/your-hostname.err。これを探すのが実は一番大変でした! :)

関連情報