banco de dados MySQL não existe nem não

1

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 cliente mysql 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 de lá. Eu poderia ter estragado algo enquanto eu estava montando um novo vhost, ou não, mas de qualquer forma eu estou completamente perdido com o que está acontecendo.

Alguém pode lançar alguma luz sobre isso?

ATUALIZAÇÃO: tentei reiniciar o servidor mysql e agora ele se recusa a iniciar o backup. Eu vou dar uma olhada nos logs. 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
    
por Félix Saparelli 09.01.2013 / 03:14

1 resposta

4

Depois de ler o arquivo de log, percebi que o servidor mysqld não está sendo executado como o usuário adequado. Ele foi originalmente configurado para ser executado como usuário nobody , mas eu mudei recentemente o usuário do Apache para someuser e, em seguida, chown 'd todo o diretório /opt/lampp para o usuário. No entanto, eu não alterei a entrada de approprite em my.cnf . Isso resolveu isso.

Para quem se deparar com essa situação estranha no futuro: os logs estão em /opt/lampp/var/mysql/your-hostname.err . Encontrar estes foi realmente a parte mais difícil! :)

    
por 09.01.2013 / 03:43

Tags