Неустранимая ошибка: невозможно открыть и заблокировать таблицы привилегий: таблица «mysql.host» не существует - PullRequest
60 голосов
/ 31 января 2012

Я на сервере, который заново установил на RHEL 5. Я смог установить Apache и PHP очень хорошо., Но у меня серьезные проблемы с установкой MySQL.Я попробовал следующее:

yum install mysql-server mysql 

И не получил никаких ошибок или конфликтов.Затем я попытался запустить mysql с помощью следующих команд:

chkconfig --levels 235 mysqld on
service mysqld start

И получить Timeout error occurred trying to start MySQL Daemon.

Я проверил свои логи и вижу эту ошибку:

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

IЯ не уверен, куда идти.

Для справки я использую RHEL 5 и установил последние версии PHP 5 и Apache.

Ответы [ 17 ]

62 голосов
/ 01 февраля 2012
  1. Удалите mysql с помощью yum remove mysql*

  2. Рекурсивно удалите /usr/bin/mysql и /var/lib/mysql

  3. Удалитеfile /etc/my.cnf.rmp

  4. Используйте ps -e для проверки процессов, чтобы убедиться, что mysql все еще не запущен.

  5. Перезагрузите сервер с reboot

  6. Пробег yum install mysql-server.Это также, похоже, устанавливает клиент mysql как зависимость.

  7. Дайте право владения mysql и привилегии группы с помощью:

    chown -R mysql /var/lib/mysql

    chgrp -R mysql /var/lib/mysql

  8. Используйте service mysqld start для запуска MySQL Daemon.

58 голосов
/ 04 марта 2014

После chown и chgrp 'ing /var/lib/mysql за ответ @ Bad Programmer вам также может понадобиться выполнить следующую команду:

sudo mysql_install_db --user=mysql --ldata=/var/lib/mysql

Затемперезагрузите ваш mysqld.

39 голосов
/ 22 апреля 2016

У меня тоже была эта проблема на Arch Linux. Проблема была в том, что pacman установил пакет в другом месте, чем ожидал MySQL. Я смог решить проблему с этим:

sudo mysql_install_db --user=mysql --basedir=/usr/ --ldata=/var/lib/mysql/

Надеюсь, это кому-нибудь поможет!

11 голосов
/ 24 ноября 2014
mysql_install_db –-user=mysql –ldata=/var/lib/mysql

работал для меня в Centos 7

10 голосов
/ 19 декабря 2012

Корень моей проблемы, казалось, был selinux, который включался (принудительно) автоматически при установке ОС.

Я хотел, чтобы мой mysql был в /data.

После проверки, что мой.cnf имел:

datadir=/data/mysql

(и оставляя сокет в / var / lib / mysql) Я выполнил команду, чтобы отключить selinux для mysqld (альтернатива - полностью его отключить):

setsebool -P mysqld_disable_trans=1

Я выполнил следующие команды:

> chown -R mysql .
> chgrp -R mysql .
> mysql_install_db --user=mysql

Я запустил демон mysql, и после этого все работало нормально.

10 голосов
/ 21 декабря 2015

инициализация mysql перед запуском в windows.

mysqld --initialize
7 голосов
/ 18 февраля 2016

При загрузке mysql zip-версии, если запустить mysqld напрямую, вы получите эту ошибку: 2016-02-18T07: 23: 48.318481Z 0 [ОШИБКА] Неустранимая ошибка: невозможно открыть и заблокировать таблицы привилегий: таблица «mysql.user» не существует 2016-02-18T07: 23: 48.319482Z 0 [ОШИБКА] Отмена

Сначала нужно выполнить команду ниже: mysqld --initialize

Убедитесь, что ваша папка данных пуста перед этой командой.

3 голосов
/ 07 июня 2016

Я только что столкнулся с той же проблемой с MySQL 5.7 на OSX:

rm -rf {datadir}
mysqld --initialize --datadir {datadir}
mysqld --datadir {datadir}
3 голосов
/ 09 октября 2014

Если вы перемещаете свой datadir, вам нужно не только дать новые разрешения datadir, но и убедиться, что все родительские каталоги имеют разрешение.

Я перенес свой dadadir на жесткий диск, смонтированный в Ubuntu как:

/media/*user*/Data/

, и мой datadir был Базы данных .

Я должен был установить разрешения 771 для каждого носителя, user и каталогов данных:

sudo chmod 771 *DIR*

Если это не сработает, другой способ заставить MySQL работать - изменить пользователя в /etc/mysql/my.cnf на root; хотя, несомненно, есть некоторые проблемы с этим с точки зрения безопасности.

2 голосов
/ 20 февраля 2016

Только этой команды достаточно, чтобы сотворить магию с сентосами 6.6

mysql_install_db

...