Из области очевидного и невероятного, и такое случается. Впервые встретился с удаленным рутом. При чем в итоге там оказалось половина mysql.* отсутствовало, вот и расскажу, как оживить мускуль в таком случае.

Итак, первым делом (это если мускуль все еще поднимается, если же нет — смотрим ниже как вернуть системные таблицы), надо вернуть в строй root-а, делаем это следующим образом, добавляем директиву в /etc/my.cnf:

[mysqld]
skip_grant_tables

Делаем рестарт mysqld, логинимся:

mysql -uroot

К сожалению обнаружилось, что создание пользователя стандартным образом, а именно через CREATE USER, в режиме skip-grant-tables невозможно, поэтому пришлось вручную, делать insert:

INSERT INTO `mysql`.`user`(`Host`, `User`, `Password`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`) VALUES ('%', 'root', PASSWORD('NEW_PASS'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0', '0');

NEW_PASS — меняем на свой пароль.

Если все хорошо, можно проверить наличие пользователя так:

select User,host from mysq.user where user='root'\G;

Далее убираем директиву skip-grant-tables из конфига и снова рестартим сервис.

Теперь, что касается частично убитых (отсутствующих) системных таблиц, они восстанавливаются довольно просто (пустые конечно):

mysql_install_db

Это выполнить надо под рутом из консоли сервера.

Должно заработать.