
Исправляем «Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist» ошибку в mysql
При работе с mysql, я получаю ряд проблем. По этому, я стараюсь сохранять данные шаги для дальнейшего использования и так же помочь кому-то кто столкнулся с подобной ошибкой.
Ошибка, с которой я столкнулся:
[root@localhost src]# cat /var/log/mysql/mysqld.log 170115 15:54:06 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql /usr/libexec/mysqld: Table 'mysql.plugin' doesn't exist 170115 15:54:06 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 170115 15:54:06 InnoDB: Initializing buffer pool, size = 8.0M 170115 15:54:06 InnoDB: Completed initialization of buffer pool 170115 15:54:06 InnoDB: Started; log sequence number 0 44233 170115 15:54:06 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 170115 15:54:06 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended [root@localhost src]#
Исправление заключается в следующем. Удаляем mysql сервер и прилегающие к нему папки и устанавливаем mysql заново. А затем, выставляем нужные права на папки :
# yum remove mysql* && rm -rf /var/lib/mysql/ && yum install -y mysql-server mysql-client && chown -R mysql:mysql /var/lib/mysql && chown -R mysql:mysql /var/log/mysql
И перезапускаем службу:
# service mysql restart
Или ( если имеется rpm дистрибутив):
# service mysqld restart
Собственно, это все!
Это не рационально. А если у меня БД на гигов 50? Заново восстанавливаться?
А есть другой способ это исправить? Опишите его и я добавлю в статью!
Можно заюзать:
# mysqld --initialize
C другого сервера взять таблицу host и скопировать в папку с базой MySQL. Только что так сервер восстановил.