
開発マシンで非常に奇妙な状況に遭遇しました。データベースは 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
。これを探すのが実は一番大変でした! :)