после перезагрузки сервера я не могу запустить 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
- Ran
yum install mysql-server
. Похоже, это также устанавливает клиент MySQL в качестве зависимости. - предоставил MySQL права владения и групповые привилегии с
chown -R mysql /var/lib/mysql
иchgrp -R mysql /var/lib/mysql
- Используется
service mysqld start
для запуска MySQL Daemon.
150225 21:39:49 InnoDB: База данных не была нормально закрыта! InnoDB: Начало восстановления после сбоя. InnoDB: Чтение информации о табличном пространстве из файлов .ibd... InnoDB: Восстановление возможных полузаписанных страниц данных из буфера InnoDB: doublewrite...
Это нормальный вывод после сбоя. InnoDB предназначен для автоматического восстановления в таких случаях, но это может занять некоторое время. Обычно минуты, но, возможно, часы, если сбой произошел, когда у вас были тысячи страниц измененных данных в памяти, а ваши диски были медленными.
В большинстве случаев InnoDB может восстановиться самостоятельно, без потери данных.
Чтобы начать восстановление, сначала вам нужно использовать директиву 'innodb_force_recovery' в /etc/my.cnf. Если вы не знакомы с этим, пожалуйста, прочтите следующую документацию,http://dev.mysql.com/doc/refman/5.0/en/forcing-innodb-recovery.html. Если вы знакомы, пожалуйста, продолжайте.
Иногда InnoDB будет поврежден только умеренно и может восстановить себя. Добавьте «innodb_force_recovery = #» в новую строку в разделе [mysqld] файла /etc/my.cnf. Обязательно замените # на требуемую величину восстановления.Если вы попытаетесь использовать что-либо, превышающее величину 4, вы подвергнетесь огромному риску дальнейшей коррупции, а это значит, что ваше время и усилия будут потрачены впустую.В этом случае, поскольку мы пытаемся выполнить самовосстановление, используйте только 1 или 2. После добавления новой строки перезапустите сервер MySQL и проверьте журналы (/var/lib/mysql/server.hostname.com.err), чтобы убедиться, что экземпляр успешно восстановился.