Неустранимая ошибка: невозможно открыть и заблокировать таблицы привилегий: таблица «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 ]

2 голосов
/ 06 сентября 2013

Для себя я должен был сделать:

yum remove mysql*

rm -rf /var/lib/mysql/
cp /etc/my.cnf ~/my.cnf.bkup

yum install -y mysql-server mysql-client

mysql_install_db

chown -R mysql:mysql /var/lib/mysql
chown -R mysql:mysql /var/log/mysql

service mysql start

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

0 голосов
/ 15 ноября 2017

Я получил похожую ошибку на overlayfs (overlay2), которая по умолчанию установлена ​​в Docker для Mac.Ошибка происходит при запуске mysql на образе, после создания образа с помощью mysql.

2017-11-15T06:44:22.141481Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table storage engine for 'user' doesn't have this option

Переключение на «aufs» решило проблему.(В Docker для Mac файл «daemon.json» можно редактировать, выбрав меню «Предпочтения ...», вкладку «Демон» и вкладку «Дополнительно».)

/ etc / docker/daemon.json:

{
  "storage-driver" : "aufs",
  "debug" : true,
  "experimental" : true
}

Ссылка:

https://github.com/moby/moby/issues/35503

https://qiita.com/Hige-Moja/items/7b1208f16997e2aa9028

0 голосов
/ 07 декабря 2016

Если у вас есть сервер, который раньше успешно запускал MySQL, но теперь выдает эту ошибку, то удаление и переустановка MySQL излишне.

В моем случае сервер умер и занял несколькоДисковые блоки с ним.Это затронуло несколько файлов, в том числе /var/lib/mysql/mysql/host.frm и /var/lib/mysql/mysql/proc.frm

К счастью, я мог скопировать их с другого сервера, и этовытащил меня из-за ошибки таблицы.

0 голосов
/ 26 июня 2013

В моем случае путь к папке данных MySQL имел специальный символ "ç", и это заставило меня получить ...

Неустранимая ошибка: не удается открыть и заблокировать таблицы привилегий: таблица 'mysql.host' не существует.

Я удалил все специальные символы, и все работает.

0 голосов
/ 05 июля 2015

Мой случай на Ubuntu 14.04.2 LTS был похож на другие с my.cnf, но для меня причиной был ~ / .my.cnf, который был перенесен из предыдущей установки. После удаления этого файла и очистки / переустановки mysql-сервера все заработало нормально.

0 голосов
/ 21 апреля 2014

У меня возникла та же проблема при попытке запустить сервер, и я следовал «проверенному» решению. Но все же была проблема. Проблема заключалась в том, что мой файл /etc/my.cnf не указывал на мой назначенный datadir как определено, когда я выполнил mysql_install_db с определенным параметром --datadir. Как только я обновил это, сервер запустился правильно.

0 голосов
/ 10 декабря 2013

В CentOS EL 6 и, возможно, в более ранних версиях есть один способ попасть в этот же беспорядок.

Установите CentOS EL6 с минимальной установкой.Например, я использовал kickstart для установки следующего:

%packages
@core
acpid
bison
cmake
dhcp-common
flex
gcc
gcc-c++
git
libaio-devel
make
man
ncurses-devel
perl
ntp
ntpdate
pciutils
tar
tcpdump
wget
%end

Вы обнаружите, что одной из зависимостей в приведенном выше списке является mysql-libs.Я обнаружил, что моя система имеет значение по умолчанию my.cnf в /etc, и оно содержит:

[mysqld]
dataddir=/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

При сборке из Generic Linux (Architecture Independent), Compressed TAR Archive каталогом данных по умолчанию является /usr/local/mysql/data, который конфликтует с /etc/my.cnf уже присутствует, что определяет datadir=/var/lib/mysql.Кроме того, pid-file, определенный в том же файле, не имеет разрешений для пользователя / группы mysql для записи в него в /var/run/mysqld.

Быстрое решение - mv /etc/my.cnf /etc/my.cnf.old, которое должно заставить вашу процедуру с исходным кодом работать.

Конечно, опыт отличается от того, используете ли вы исходные RPM.

...