GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der richtige Speicherort der mysql.sock-Datei unter Linux?

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.


Linux
  1. Linux – Was sind die verschiedenen Möglichkeiten zum Festlegen von Dateiberechtigungen usw. unter Gnu/Linux?

  2. Was ist der richtige Weg, um jdk unter Linux zu installieren?

  3. Was ist das Äquivalent zum Linux-Dateibefehl für Windows?

  4. Welche Dateisysteme unter Linux speichern die Erstellungszeit?

  5. Linux-Dateihierarchie - was ist der beste Ort zum Speichern von Sperrdateien?

Einführung in das Linux-Dateisystem

Was ist umask unter Linux?

Was ist die Shell unter Linux?

Was ist eine .bashrc-Datei unter Linux?

Wie finde ich den my.cnf-Speicherort von MySQL?

Was bewirkt das Setzen eines Linux-Sockets - hohe Priorität?