Die Socket-Deklaration sollte sich unter [mysqld]
befinden in Ihrem my.cnf
. Wenn Sie es dort deklariert haben und immer noch auf eine andere Stelle wie tmp
zeigen , dann Ihre my.cnf
Datei, die Sie bearbeitet haben, wird beim Start von mysql nicht gelesen oder es gibt einen weiteren my.cnf
überschreibt die, die Sie bearbeitet haben. Es kann auch sein, dass es einen zweiten Socket
gibt Deklaration im selben my.cnf
Datei, die diejenige überschreibt, von der Sie erwarten, dass sie beim Start von mysql gelesen wird.
Sie können den absoluten Pfad überprüfen, indem Sie sich bei mysql anmelden und Folgendes ausführen:
mysql> show variables like 'socket';
+-----------------------------------------+-------------------------------+
| Variable_name | Value |
+-----------------------------------------+-------------------------------+
| socket | /yourpath/mysql.sock |
+-----------------------------------------+-------------------------------+
1 rows in set (0.00 sec)
Es gibt unter Linux keinen richtigen oder falschen Ort zum Speichern von Sockets, außer auf externen Geräten, die jederzeit ausgehängt werden, oder Ordnern, die von Zeit zu Zeit geleert werden. Sie müssen konfigurieren, wo Sie es platzieren möchten.
Für den MySQL-Konsolenclient gibt es noch etwas zu beachten:Der Client scheint den in [client] bereitgestellten Socket-Konfigurationswert anstelle von [mysqld] zu verwenden. Wenn Sie ein Setup mit mehreren MySQL-Servern haben, wie ich es habe (4.1, 5.5, 5.7), möchten Sie wahrscheinlich eine Option "--defaults-extra-file" verwenden, wobei der Socket für jeden Server in den Teil [client] geschrieben wird. Der Socket muss derselbe sein wie der, der im my.cnf [mysqld]-Teil definiert ist, der auf dem Server verwendet wird. Hier ist ein Beispiel defaults-extra-file.cnf, denken Sie daran, den Benutzer, das Passwort und den Socket nach Ihren Bedürfnissen zu ändern - und behalte es auf Zugriffsrecht 400 (da ist doch ein Passwort hinterlegt):
[client]
user = guardian
password = I-4m.Gr00t!
host = localhost
socket = /var/run/mysqld/mysqld-5.6.sock
Dies gilt jedoch nur, wenn Sie "localhost" als Wert für "host" verwenden. Wenn Sie mehrere lokale Adressen haben (127.0.0.2, 127.0.0.3), müssen Sie die Konfigurationsvariable für „host“ auf „localhost“ belassen, um den konfigurierten Socket zu verwenden. Andernfalls verbindet sich der Client über TCP mit dem Server.
Dies wurde auf meinem Debian 9.5 Server mit MySQL 4.1.22, 5.5.49 und 5.7.19 und ihren jeweiligen Clients getestet.