重新启动服务器后,无法启动 mysql:
$ sudo service mysql start
$ Starting MySQL. ERROR! Manager of pid-file quit without updating file.
“/var/log/mysqld.log”显示:
150225 21:39:49 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150225 21:39:49 [Note] Plugin 'FEDERATED' is disabled. /usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist 150225 21:39:49 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 150225 21:39:49 InnoDB: Initializing buffer pool, size = 8.0M 150225 21:39:49 InnoDB: Completed initialization of buffer pool InnoDB: Log scan progressed past the checkpoint lsn 0 37356 150225 21:39:49 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... InnoDB: Doing recovery: scanned up to log sequence number 0 44233 150225 21:39:49 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 150225 21:39:49 InnoDB: Started; log sequence number 0 44233 150225 21:39:49 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 150225 21:39:49 mysqld_safe mysqld from pid file /var/lib/mysql/iZ23aa67ovhZ.pid ended
并且我的硬盘驱动器没有满。
这是 /var/lib/mysql 的状态:
drwxrwxrwx 2 mysql root 4096 Feb 26 16:43 . drwxr-xr-x. 21 root root 4096 Feb 25 19:38 .. -rw-rw---- 1 mysql mysql 10485760 Feb 25 19:38 ibdata1 -rw-rw---- 1 mysql mysql 5242880 Feb 26 16:43 ib_logfile0 -rw-rw---- 1 mysql mysql 5242880 Feb 25 19:38 ib_logfile1
这是 /etc/my.cnf:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
服务器上没有 mysql_install_db:
bash: mysql_install_db: command not found
当我运行 mysql_safe 时,它显示:
150226 16:58:50 mysqld_safe Logging to '/var/log/mysqld.log'. 150226 16:58:50 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150226 16:58:50 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
多谢!
答案1
150225 21:39:49 [错误] 致命错误:无法打开和锁定特权表:表“mysql.host”不存在
要修复此问题,您只需告诉 mysql 查找位置,而不是移动默认安装即可。您可以使用以下方法执行此操作:
mysql_install_db –user=mysql –ldata=/newlocation
完成后你可以重新启动mysql
/etc/init.d/mysqld restart
如果没有帮助的话:
- 使用以下方法卸载 mysql
yum remove mysql*
- 递归删除
/usr/bin/mysql
并/var/lib/mysql
- 还删除了文件
/etc/my.cnf.rmp
- 用于
ps -e
检查进程以确保 mysql 不再运行。 - 重新启动服务器
reboot
- 跑了
yum install mysql-server
。这似乎还将 mysql 客户端作为依赖项进行安装。 chown -R mysql /var/lib/mysql
授予 mysql 所有权和组权限chgrp -R mysql /var/lib/mysql
- 用于
service mysqld start
启动 MySQL Daemon。
150225 21:39:49 InnoDB:数据库未正常关闭!InnoDB:开始崩溃恢复。InnoDB:从 .ibd 文件中读取表空间信息...InnoDB:从双写 InnoDB:缓冲区中恢复可能写入一半的数据页...
这是崩溃后的正常输出。InnoDB 旨在在这些情况下自动恢复,但可能需要一些时间。通常是几分钟,但如果崩溃发生在内存中有数千页修改数据且磁盘速度较慢时,则可能需要几个小时。
InnoDB在大多数情况下可以自行恢复,不会丢失数据。
要开始恢复,首先,您必须使用 /etc/my.cnf 中的“innodb_force_recovery”指令。如果您不熟悉这一点,请阅读以下文档,http://dev.mysql.com/doc/refman/5.0/en/forcing-innodb-recovery.html。如果您熟悉,请继续。
有时,InnoDB 只会受到中等程度的损坏,并且可以自我修复。在 /etc/my.cnf 的 [mysqld] 部分下的新行中添加“innodb_force_recovery = #”。确保将 # 替换为您所需的恢复程度。如果您尝试使用超过 4 级的任何东西,您将面临进一步损坏的极大风险,这意味着您的时间和精力将白费。在这种情况下,由于我们尝试自我修复,因此仅使用 1 或 2。添加新行后,重新启动 MySQL 服务器并检查日志(/var/lib/mysql/server.hostname.com.err)以检查实例是否成功修复了自身。