
我剛剛在我的開發機器上遇到了一個非常奇怪的情況:資料庫列在 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 安裝來自那裡。在設定新的虛擬主機時,我可能搞砸了一些事情,也可能沒有,但無論如何,我對發生的事情完全不知所措。
有人能解釋一下嗎?
更新:我嘗試重新啟動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
.找到這些其實是最困難的部分! :)