
Acabo de encontrar una situación muy extraña en mi máquina de desarrollo: la base de datos aparece en PHPMyAdmin, pero sin tablas. Intrigado, abrí un mysql
cliente en la línea de comando y he aquí:
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
Estoy ejecutando Arch Linux y instalé el paquete Xampp desde AUR; la instalación de MySQL proviene de allí. Puede que haya cometido algún error mientras configuraba un nuevo servidor virtual, o no, pero en cualquier caso no sé qué está pasando.
¿Alguien puede arrojar algo de luz sobre esto?
ACTUALIZACIÓN: Intenté reiniciar el mysql
servidor y ahora se niega a iniciar la copia de seguridad. Echaré un vistazo a los registros. Aquí está la 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
Respuesta1
Después de leer el archivo de registro, me di cuenta de que el servidor mysqld no se ejecuta como el usuario adecuado. Originalmente estaba configurado para ejecutarse como usuario nobody
, pero recientemente cambié el usuario de Apache someuser
y luego chown
configuré todo el /opt/lampp
directorio al usuario. Sin embargo, no había cambiado la entrada apropiada en my.cnf
. Eso lo solucionó.
Para cualquiera que se encuentre con esta extraña situación en el futuro: los registros están en formato /opt/lampp/var/mysql/your-hostname.err
. ¡Encontrarlos fue en realidad la parte más difícil! :)