it-swarm.com.de

Schwerwiegender Fehler: Berechtigungstabellen können nicht geöffnet und gesperrt werden: Tabelle 'mysql.Host' existiert nicht

Ich bin auf einem Server, auf dem RHEL 5 neu installiert wurde. Ich konnte Apache und PHP in Ordnung. Ich habe jedoch ernsthafte Probleme mit meiner MySQL-Installation. Ich habe Folgendes versucht:

yum install mysql-server mysql 

Und keine Fehler oder Konflikte bekommen. Dann habe ich versucht, mysql mit den folgenden Befehlen zu starten:

chkconfig --levels 235 mysqld on
service mysqld start

Und bekomme Timeout error occurred trying to start MySQL Daemon.

Ich habe meine Protokolle überprüft und sehe diesen Fehler:

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

Ich bin mir nicht sicher, wohin ich von hier aus gehen soll.

Als Referenz verwende ich RHEL 5 und installiere die neuesten Versionen von PHP 5 und Apache.

60
Bad Programmer
  1. Deinstalliere mysql mit yum remove mysql*

  2. Rekursives Löschen von /usr/bin/mysql Und /var/lib/mysql

  3. Lösche die Datei /etc/my.cnf.rmp

  4. Verwenden Sie ps -e, Um die Prozesse zu überprüfen, um sicherzustellen, dass mysql noch nicht ausgeführt wird.

  5. Server neu starten mit reboot

  6. Führen Sie yum install mysql-server Aus. Dies scheint auch den MySQL-Client als eine Abhängigkeit zu installieren.

  7. Verleihen Sie mysql Eigentums- und Gruppenrechten mit:

    chown -R mysql /var/lib/mysql

    chgrp -R mysql /var/lib/mysql

  8. Verwenden Sie service mysqld start, Um MySQL Daemon zu starten.

61
Bad Programmer

Nach chown und chgrp 'ing /var/lib/mysql Nach der Antwort von @ Bad Programmer müssen Sie möglicherweise auch den folgenden Befehl ausführen:

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

Starten Sie dann Ihr mysqld neu.

58
bk0

Ich hatte dieses Problem auch unter Arch Linux. Das Problem war, dass Pacman das Paket an einem anderen Ort installierte, als von MySQL erwartet. Ich konnte das Problem folgendermaßen beheben:

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

Hoffe das hilft jemandem!

39
zomblake
mysql_install_db –-user=mysql --ldata=/var/lib/mysql

Arbeitete für mich in Centos 7

11
JVJ

initialisieren Sie MySQL, bevor Sie Windows starten.

mysqld --initialize
10
tvrcgo

Die Wurzel meines Problems schien Selinux zu sein, das bei der Installation des Betriebssystems automatisch aktiviert (erzwungen) wurde.

Ich wollte mein mysql in/data.

Nach der Überprüfung, dass my.cnf hatte:

datadir=/data/mysql

(und den Socket unter/var/lib/mysql belassen) Ich habe den Befehl ausgeführt, um selinux für mysqld auszuschalten (alternativ ist es, es vollständig auszuschalten):

setsebool -P mysqld_disable_trans=1

Ich habe die folgenden Befehle ausgeführt:

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

Ich habe den MySQL-Daemon gestartet und danach hat alles gut funktioniert.

10
Ilane

Wenn Sie die mysql Zip-Version herunterladen und mysqld direkt ausführen, erhalten Sie folgende Fehlermeldung: 2016-02-18T07: 23: 48.318481Z 0 [FEHLER] Schwerwiegender Fehler: Berechtigungstabellen können nicht geöffnet und gesperrt werden: Tabelle 'mysql.user' existiert nicht 2016-02-18T07: 23: 48.319482Z 0 [FEHLER] Abbruch

Sie müssen zuerst den folgenden Befehl ausführen: mysqld --initialize

Stellen Sie sicher, dass Ihr Datenordner vor diesem Befehl leer ist.

7
Levin

Ich habe gerade das gleiche Problem mit MySQL 5.7 auf OSX getroffen:

rm -rf {datadir}
mysqld --initialize --datadir {datadir}
mysqld --datadir {datadir}
3
Shuo

Wenn Sie Ihren Datadir verschieben, müssen Sie nicht nur die neuen Datadir-Berechtigungen erteilen, sondern auch sicherstellen, dass alle übergeordneten Verzeichnisse über Berechtigungen verfügen.

Ich habe mein Datenverzeichnis auf eine Festplatte verschoben, die in Ubuntu als:

/media/*user*/Data/

und mein datadir war Datenbanken.

Ich musste die Berechtigungen für jedes der Medien Benutzer und Datenverzeichnisse auf 771 setzen:

Sudo chmod 771 *DIR*

Wenn dies nicht funktioniert, können Sie mysql auch zum Laufen bringen, indem Sie den Benutzer in /etc/mysql/my.cnf in root ändern. obwohl es zweifellos einige Probleme gibt, wenn man das aus der Sicherheitsperspektive macht.

3
Kohjah Breese

Nur dieser Befehl reicht aus, um die Zauberei auf Centos 6.6 auszuführen

mysql_install_db

2
venkat sam

Für mich selbst musste ich tun:

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

Dann konnte ich wieder in meine Datenbanken zurückkehren und sie neu konfigurieren, nachdem ich sie beim ersten Versuch mit Atomwaffen behandelt hatte.

2
Pred

In meinem Fall hatte der Pfad des MySQL-Datenordners ein Sonderzeichen "ç" und ich erhalte ...

Schwerwiegender Fehler: Berechtigungstabellen können nicht geöffnet und gesperrt werden: Tabelle 'mysql.Host' existiert nicht.

Ich habe alle Sonderzeichen entfernt und alles funktioniert.

0
Felipe Loredo

In CentOS EL 6 und möglicherweise in früheren Versionen gibt es eine Möglichkeit, in das gleiche Chaos zu geraten.

Installieren Sie CentOS EL6 mit einer minimalen Installation. Zum Beispiel habe ich Kickstart verwendet, um Folgendes zu installieren:

%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

Sie werden feststellen, dass eine der Abhängigkeiten der obigen Liste mysql-libs Ist. Ich habe festgestellt, dass mein System einen Standardwert my.cnf In /etc Hat und dieser enthält:

[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

Wenn Sie aus Generic Linux (Architecture Independent), Compressed TAR Archive erstellen, ist Ihr Standarddatenverzeichnis /usr/local/mysql/data, Was mit dem bereits vorhandenen /etc/my.cnf In Konflikt steht, das datadir=/var/lib/mysql Definiert. Auch das in derselben Datei definierte pid-file Hat keine Berechtigung für den mysql-Benutzer/die mysql-Gruppe, in /var/run/mysqld Darauf zu schreiben.

Eine schnelle Lösung ist mv /etc/my.cnf /etc/my.cnf.old, Mit der Ihre generische Quellprozedur funktionieren sollte.

Natürlich ist die Erfahrung anders, als Sie die Quell-RPMs verwenden.

0
Chris Labonne

Ich hatte das gleiche Problem beim Versuch, den Server zu starten und folgte der "überprüften" Lösung. Hatte aber trotzdem das Problem. Das Problem war, dass meine /etc/my.cnf -Datei nicht auf das angegebene Datenverzeichnis zeigte, wie es bei der Ausführung von mysql_install_db mit --datadir definiert war. Nachdem ich dies aktualisiert habe, wurde der Server ordnungsgemäß gestartet.

0
zagatztu

Wenn Sie einen Server haben, auf dem MySQL früher problemlos ausgeführt wurde, der jetzt jedoch diesen Fehler anzeigt, ist die Deinstallation und Neuinstallation von MySQL ein Kinderspiel.

In meinem Fall ist der Server gestorben und hat ein paar Plattenblöcke mitgenommen. Dies betraf einige Dateien, darunter /var/lib/mysql/mysql/Host.frm und /var/lib/mysql/mysql/proc.frm

Zum Glück konnte ich diese von einem anderen Server kopieren, und das brachte mich über den Tabellenfehler hinaus.

0
Nigel Pearson

Ich habe einen ähnlichen Fehler bei Overlays (Overlay2) erhalten, der bei Docker für Mac der Standard ist. Der Fehler tritt auf, wenn MySQL für das Image gestartet wird, nachdem ein Image mit MySQL erstellt wurde.

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

Der Wechsel zu "aufs" löste das Problem. (In Docker für Mac kann die Datei "daemon.json" bearbeitet werden, indem Sie im Menü "Einstellungen" die Registerkarte "Daemon" und dann die Registerkarte "Erweitert" auswählen.)

/etc/docker/daemon.json:

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

Ref:

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

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

0
Tsuneo Yoshioka