mysql_install_db


mysql_install_db — инициализация datadir или способ пересоздать системные базы данных и таблицы MySQL в случае если они были повреждены. Фактически является переустановкой MySQL выполняемой на уровне базы данных, а не на уровне пакетов операционной системы.



mysql_install_db инициализация datadir MySQL


Три базы данных существуют в MySQL сразу после установки. Они являются системными.

mysql> show databases;

+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)



Таблицы в базах могут быть повреждены. Часто такое бывает когда на диске заканчивается место или по другой причине аварийно  завершается работа сервера баз данных.



Восстановление таблиц типа MyISAM выполняется просто, с InnoDB бывают сложности. В некоторых ситуациях даже innodb_force_recovery не дает результата.

Если повреждены системные таблицы, данные же в порядке — можно сделать дампы всех баз, инициализировать MySQL. Затем повторно создать базы и загрузить дампы обратно.



Порядок действий


Дампы всех баз создаем при помощи утилиты mysqldump

После этого datadir сервера баз данных можно удалить или переместить если есть запас по месту на диске



Останавливаем MySQL

systemctl stop mysql



Перемещаем datadir

mv /var/lib/mysql /var/lib/mysql.old



Создаем каталог под данные MySQL и выставляем права

mkdir /var/lib/mysql && chown mysql: /var/lib/mysql





Теперь можно выполнять инициализацию datadir

mysql_install_db --user=root

Дополнительно можно указать ключ --datadir='/var/lib/mysql'. Он всегда нужен в случаях когда требуется установить сервер по нестандартному пути такому как /var/lib/mysql5. Такое бывает когда на сервере используется больше одного инстанса MySQL — например, они разных версий.



MySQL возьмет конфигурационный файл /etc/mysql/my.cnf и создаст новые базы. Пользователей нужно будет добавлять заново или загрузить таблицу user из базы mysql (если ее дамп удалось сделать).

В директории /var/lib/mysql появятся файлы. После этого можно запускать сервер баз данных, создавать базы и загружать SQL дампы.



Для root пользователя MySQL понадобится установить пароль (статья на эту тему по ссылке). После запуска сервиса у него отсутствует возможность подключиться без использования директивы skip-grant-table.



Читайте про восстановление MyISAM.

Сказать спасибо