
방금 내 개발 컴퓨터에서 매우 이상한 상황에 직면했습니다. 데이터베이스가 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
. 실제로 이것을 찾는 것이 가장 어려운 부분이었습니다! :)