Неустранимая ошибка: не удается открыть и заблокировать таблицы привилегий: Таблица "mysql.host" не существует
Я на сервере, который обновил установку на 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
Я не уверен, куда идти отсюда.
Для справки я использую RHEL 5 и устанавливаю последние версии PHP 5 и Apache.
Ответы
Ответ 1
-
Удалите mysql с помощью yum remove mysql*
-
Рекурсивно удалить /usr/bin/mysql
и /var/lib/mysql
-
Удалите файл /etc/my.cnf.rmp
-
Используйте ps -e
, чтобы проверить процессы, чтобы убедиться, что mysql еще не запущен.
-
Перезагрузите сервер с помощью reboot
-
Запустите yum install mysql-server
. Это также похоже на установку клиента mysql в качестве зависимости.
-
Предоставьте владельцам mysql и групповым привилегиям:
chown -R mysql /var/lib/mysql
chgrp -R mysql /var/lib/mysql
-
Используйте service mysqld start
, чтобы запустить MySQL Daemon.
Ответ 2
После chown
и chgrp
'ing /var/lib/mysql
за ответ @Bad Programmer вам также может потребоваться выполнить следующую команду:
sudo mysql_install_db --user=mysql --ldata=/var/lib/mysql
Затем перезапустите mysqld
.
Ответ 3
У меня тоже была проблема с arch linux. Проблема заключалась в том, что pacman установил пакет в другом месте, чем ожидал MySQL. Я смог решить эту проблему следующим образом:
sudo mysql_install_db --user=mysql --basedir=/usr/ --ldata=/var/lib/mysql/
Надеюсь, это поможет кому-то!
Ответ 4
mysql_install_db –-user=mysql --ldata=/var/lib/mysql
работал для меня в Centos 7
Ответ 5
Корень моей проблемы, казалось, был selinux, который был включен (принудительно)
автоматически при установке ОС.
Мне нужен мой mysql в /data.
После проверки того, что my.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, и после этого все сработало.
Ответ 6
инициализировать mysql перед запуском в Windows.
mysqld --initialize
Ответ 7
При загрузке mysql zip версии, если вы запустите mysqld напрямую, вы получите эту ошибку:
2016-02-18T07: 23: 48.318481Z 0 [ОШИБКА] Неустранимая ошибка: не удается открыть и заблокировать таблицы привилегий: Таблица "mysql.user" не существует
2016-02-18T07: 23: 48.319482Z 0 [ОШИБКА] Отмена
Сначала вы должны выполнить команду ниже:
mysqld --initialize
Перед этой командой убедитесь, что ваша папка данных пуста.
Ответ 8
Если вы перемещаете свой datadir, вам необходимо не только предоставить новые разрешения datadir, но вам нужно обеспечить, чтобы все родительские каталоги имели разрешение.
Я переместил свой datadir на жесткий диск, установленный в Ubuntu, как:
/media/*user*/Data/
а мой datadir - это базы данных.
Мне нужно было установить разрешения для 771 для каждого из медиа, пользовательских и данных:
sudo chmod 771 *DIR*
Если это не сработает, другой способ заставить mysql работать - это изменить пользователя в /etc/mysql/my.cnf на root; хотя, несомненно, есть некоторые проблемы с этим с точки зрения безопасности.
Ответ 9
Я просто встретил ту же проблему с mysql 5.7 на OSX:
rm -rf {datadir}
mysqld --initialize --datadir {datadir}
mysqld --datadir {datadir}
Ответ 10
Для себя я должен был сделать:
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
Затем мне удалось вернуться в мои базы данных и настроить их еще раз после того, как я начал их первым обходить.
Ответ 11
Только этой команды достаточно, чтобы сделать магию на centos 6.6
mysql_install_db
Ответ 12
В моем случае путь к папке данных MySQL имел специальный символ "ç", и он заставлял меня...
Неустранимая ошибка: не удается открыть и заблокировать таблицы привилегий: Таблица 'mysql.host' не существует.
Я удалил все специальные символы, и все работает.
Ответ 13
В 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 исходного кода.
Ответ 14
У меня была такая же проблема при попытке запустить сервер и следовать "проверенному" решению.
Но все еще была проблема. Проблема заключалась в том, что мой файл /etc/my.cnf не указывал на мой
назначенный datadir, как определено, когда я выполнил mysql_install_db с -datadir. Как только я обновил это, сервер начал правильно.
Ответ 15
Если у вас есть сервер, который раньше успешно запускал MySQL, но теперь дает эту ошибку, то удаление и переустановка MySQL переполняется.
В моем случае сервер умер и взял с собой несколько блоков диска. Это затронуло несколько файлов, в том числе /var/lib/mysql/mysql/host.frm и/var/lib/mysql/mysql/proc.frm
К счастью, я мог бы скопировать их с другого сервера, и это привело меня к ошибке в этой таблице.
Ответ 16
У меня есть аналогичная ошибка на 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
}
Ref:
https://github.com/moby/moby/issues/35503
https://qiita.com/Hige-Moja/items/7b1208f16997e2aa9028
Ответ 17
Мой случай на Ubuntu 14.04.2 LTS был похож на другие с my.cnf, но для меня причина была ~/.my.cnf, которая осталась прежней. Удалив этот файл и очистив/переустановив mysql-сервер, он отлично работал.