Ich kann mysql nicht starten mit:
130408 11:31:22 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
/usr/libexec/mysqld: Table 'plugin' is read only
130408 11:31:22 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130408 11:31:22 InnoDB: Initializing buffer pool, size = 8.0M
130408 11:31:22 InnoDB: Completed initialization of buffer pool
130408 11:31:23 InnoDB: Started; log sequence number 0 19514977
130408 11:31:23 [ERROR] Can't start server : Bind on unix socket: Permission denied
130408 11:31:23 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
130408 11:31:23 [ERROR] Aborting
130408 11:31:23 InnoDB: Starting shutdown...
130408 11:31:28 InnoDB: Shutdown completed; log sequence number 0 19514977
130408 11:31:28 [Note] /usr/libexec/mysqld: Shutdown complete
130408 11:31:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Ein anderes MySQL läuft nicht:
[root@triton667 etc]# ps ax | grep mysql
9195 pts/1 S+ 0:00 grep mysql
my.cnf:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
tmpdir=/tmp
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet=256M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Berechtigungen für "/ tmp" und "/ var / lib / mysql" sind 777 /
Irgendwelche Vorschläge?
UPD1 :
[root@triton667 etc]# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) trying to connect
FATAL ERROR: Upgrade failed
UPD2 : plugin.MYD, plugin.MYI und plugin.frm sind in / var / lib / mysql / mysql / vorhanden.
Auf Port 3306 läuft nichts.
mysql.sock existiert nicht. Ich habe versucht, es selbst zu erstellen, aber nach dem Neustart wurde es entfernt.
montieren (alle rw):
[root@triton667 mysql]# mount
/dev/md1 on / type ext4 (rw,noatime,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/md0 on /boot type ext2 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
Dieses Problem trat heute auf, als ich versuchte, meine Site auf einer Unterdomäne zu klonen.
mysql_upgrade
wie vorgeschlagen ausführen ?Antworten:
1) Stellen Sie zunächst sicher, dass Sie die vorhandene Socket-Datei mit dem Befehl rm löschen.
2) Beenden Sie alle vorhandenen MySQL-Prozesse mit dem folgenden Befehl.
3) Sehr wichtig: Stellen Sie sicher, dass die Berechtigung für das MySQL-Datenbankverzeichnis unter
/var/lib/
Ordner mysql: root lautet4) Mit den obigen Informationen sollten Sie in der Lage sein, MySQL erfolgreich zu starten, und die Socket-Datei sollte erfolgreich unter dem Datenbankverzeichnis erstellt werden.
quelle
Dank der Antwort von @ Abhishek in Kombination mit der Ausgabe von mysqld (Kann /var/run/mysqld/mysqld.sock nicht verwenden) konnte ich dieses Problem mit einem einzigen Befehl lösen:
Dann geht es richtig los:
quelle
Ihr Problem kann durch eine beliebige Bedingung verursacht werden, die verhindert, dass der MySQL-Dämon eine Socket-Datei in den Pfad schreibt
/var/lib/mysql
. Die anderen Antworten, wie beispielsweise ein schreibgeschütztes Dateisystem oder ein falscher Verzeichnisbesitz, sprechen verschiedene Gründe an, aus denen MySQL möglicherweise nicht in der Lage ist, in den Socket zu schreiben.Ein weiterer möglicher Grund ist, dass
/var/lib/mysql
möglicherweise der falsche SELinux-Kontext vorliegt. Sie können diesen Zustand diagnostizieren, indem Sie nach dem Versuch, den MySQL-Daemon zu starten, nach aktuellen SELinux AVC-Ablehnungen suchen:ausearch -m avc --start recent
Wenn SELinux den Zugriff zum Erstellen der Socket-Datei verweigert, wird folgende Fehlermeldung angezeigt:
Um eine SELinux-Ablehnung aufzulösen, versuchen Sie, den Standardkontext des Verzeichnisses wiederherzustellen (Ihre Distribution sollte den richtigen Kontext für die
mysqld_db_t
Installation von MySQL oder MariaDB festlegen ):restorecon -R -v -f /var/lib/mysql
Wenn Sie die Kontexte auf Ihrem System angepasst haben, liegt die Behebung des Problems außerhalb des Bereichs dieses Beitrags.
quelle
Ich würde vorschlagen, basierend auf dem, was Sie schreiben, zu überprüfen, ob Ihr Dateisystem schreibgeschützt gemountet ist.
quelle
Ich habe alle anderen Antworten ausprobiert, um das Problem zu beheben. Es scheint, dass, wenn ich Selinux auf permissive setze:
setenforce 0
Ich konnte den Server starten.Ich habe dann das
/var/lib/mysql
sock- Verzeichnis geändert, um dem Verzeichnis Selinux-Berechtigungen zu erteilen:Sobald dies erledigt ist, aktiviere ich Selinux mit dem
setenforce 1
gestarteten MySQL-Dienst und alles war in Ordnung .Hoffe das hilft anderen.
quelle