我在 Ubuntu 上运行的 Mysql 数据库突然崩溃了。我尝试通过删除以下内容来清理安装:-
apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
从系统中,然后使用 aptitude 重新安装它们。
我还从我知道适用于数据库的备份中恢复了 /var/lib/mysql 中的所有文件。
我可以进入数据库并切换到我怀疑有损坏文件的数据库,但是当我执行“显示表格”时,我就会崩溃:-
mysql> show tables;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 5
Current database: DBNAME
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
ERROR:
Can't connect to the server
错误日志的最后几行显示:-
120311 17:12:29 [ERROR] Column count of mysql.db is wrong. Expected 22, found 20. The table is probably corrupted
120311 17:12:29 [ERROR] mysql.user has no `Event_priv` column at position 29
120311 17:12:29 [ERROR] Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler.
120311 17:12:29 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.41-3ubuntu12.10' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
我希望全新安装能够消除“mysql.db 的列数错误”错误,但似乎并没有这样做。
有人能建议一种方法来恢复我的数据库吗?!
答案1
手动运行mysql_upgrade
- 您的 MySQL 数据库可能不满足您正在使用的 MySQL 更新版本的架构要求。
您是否已备份服务器的权限?如果是,备份 mysql 数据目录可能会更快(以防万一) - 关闭 MySQL,从数据目录中删除“mysql”目录/db,然后运行“mysql_install_db”以重新生成数据库,启动 MySQL 并重新加载您的权限。