2016-04-30 28 views
0

Ich kann eine Verbindung zur MySQL-Datenbank herstellen und abfragen. Aber ich bin NICHT in der Lage, die Socket-Datei zu finden.MySQL 5.6 - Datenbank läuft, aber keine Socket-Datei

$ps -ef|grep mysql 
mysql 31408 30874 0 18:46 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe  --defaults-file=/mysql/admin/ofile/TEST1.cnf 

mysql 31959 31408 0 18:46 pts/1 00:00:01 /usr/sbin/mysqld --defaults- file=/mysql/admin/ofile/TEST1.cnf --basedir=/usr -- datadir=/mysql01data/TEST1/data --plugin-dir=/usr/lib64/mysql/plugin --log- error=/mysql/admin/TEST1/errors/mysqld_safe.err --pid- file=/mysql/admin/TEST1/run/mysqld_safe.pid 

Hier ist meine Socket-Datei Eintrag in TEST1.cnf:

$ cat /mysql/admin/ofile/TEST1.cnf|grep sock 
socket       = /mysql/admin/TEST1/run/TEST1.sock 

Das entsprechende Verzeichnis enthält nur pid-Datei. Es gibt keine Socket-Datei.

-sh-4.1$ cd /mysql/admin/TEST1/run 
-sh-4.1$ ls -lrt 
total 4 
-rw-rw---- 1 mysql mysql 6 Apr 29 18:46 mysqld_safe.pid 

Dies ist die MySQL 5.6-Version, die ich über RPMs auf RHEL 6.5 installiert habe. Ich habe meine alten benutzerdefinierten Skripts, die Socket-Datei verwendet, um eine Verbindung mit der Datenbank herzustellen.

Also frage ich mich, wie ich die Socket-Datei verwenden kann, um eine Verbindung zur Datenbank herzustellen? Warum wird die Socket-Datei nicht standardmäßig erstellt?

+0

Sie finden Socket-Datei unter Mysql-Datenbank-Verzeichnis –

+1

Liefert 'sudo lsof -a -U -p $ (pgrep -d, -f/usr/sbin/mysqld)' nützliche Informationen? –

+0

@ Michael-sqlbot Ja, ich sehe Socket-Datei in/var/lib/mysql erstellt. Aber warum gehorcht die Socket-Datei nicht meinem Socket-Parameter in der Conf-Datei? '-sh-4.1 $ lsof -a -U -p $ (pgrep -d, -f/usr/sbin/mysqld) KOMMANDO PID BENUTZER FD TYPE GRÖSSE/AUS NAME mysqld 5042 mysql 20u unix 0t0/var/lib/mysql/mysql.sock' – vins

Antwort

1

Die Socket-Datei für eine laufende Instanz von MySQL Server sollte etwas sein, das mit diesem Shell-Befehl gefunden werden kann:

sudo lsof -a -U -p $ (pgrep -d, -f/path/to/your/running/mysqld)

Eine mögliche Ursache dafür, dass die Socket-Datei nicht gefunden werden konnte, wäre, wenn sie nach dem Start des Servers gelöscht worden wäre. In diesem Fall sollte der obige Befehl funktionieren und etwas wie (deleted) nach dem Pfad anzeigen.

Das war meine ursprüngliche Annahme zu dieser Frage ... aber hier war das Problem eine Konfigurationsüberwachung. Die "Standard-Datei", üblicherweise my.cnf genannt, enthält mehrere Abschnitte. Der Abschnitt [client] konfiguriert Client-Dienstprogramme wie mysql und mysqldump, während der Abschnitt [mysqld] den Server-Daemon konfiguriert. Wenn sich die Direktive socket nicht im entsprechenden Abschnitt befindet, sucht der Server (und/oder die Client-Dienstprogramme) standardmäßig nach dem kompilierten Speicherort, wobei /tmp/mysql.sock oder /var/lib/mysql/mysql.sock ein paar Beispiele für allgemeine Standardspeicherorte sind.