
Acabei de encontrar uma situação muito estranha na minha máquina de desenvolvimento: o banco de dados está listado no PHPMyAdmin, mas sem nenhuma tabela. Intrigado, abri um mysql
cliente na linha de comando e eis que:
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
Estou executando o Arch Linux e instalei o pacote Xampp do AUR; a instalação do MySQL vem daí. Posso ter estragado alguma coisa enquanto estava configurando um novo vhost, ou não, mas de qualquer forma não sei o que está acontecendo.
Alguém pode lançar alguma luz sobre isso?
ATUALIZAÇÃO: tentei reiniciar o mysql
servidor e agora ele se recusa a iniciar o backup. Vou dar uma olhada nos registros. Aqui está a parte relevante:
/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
Responder1
Depois de ler o arquivo de log, percebi que o servidor mysqld não estava rodando como o usuário adequado. Ele foi originalmente configurado para ser executado como usuário nobody
, mas recentemente mudei o usuário do Apache para someuser
e depois chown
coloquei o /opt/lampp
diretório inteiro para o usuário. No entanto, eu não alterei a entrada apropriada em my.cnf
. Isso resolveu.
Para qualquer um que se depare com esta situação estranha no futuro: os logs estão no formato /opt/lampp/var/mysql/your-hostname.err
. Encontrá-los foi realmente a parte mais difícil! :)