La dichiarazione del socket dovrebbe trovarsi sotto [mysqld]
nel tuo my.cnf
. Se l'hai dichiarato lì e stai ancora puntando a un altro posto come tmp
, quindi il tuo my.cnf
il file che hai modificato non viene letto all'avvio di mysql o c'è un altro my.cnf
sovrascrivendo quello che hai modificato. Il caso potrebbe anche essere che ci sia un secondo Socket
dichiarazione nello stesso my.cnf
file che sovrascrive quello che ti aspetti venga letto all'avvio da mysql.
Puoi controllare il suo percorso assoluto accedendo a mysql ed eseguendo:
mysql> show variables like 'socket';
+-----------------------------------------+-------------------------------+
| Variable_name | Value |
+-----------------------------------------+-------------------------------+
| socket | /yourpath/mysql.sock |
+-----------------------------------------+-------------------------------+
1 rows in set (0.00 sec)
Non esiste un posto giusto o sbagliato su Linux per salvare i socket, tranne che su dispositivi esterni che vengono smontati in qualsiasi momento o cartelle che vengono svuotate di tanto in tanto. Devi configurare dove vuoi posizionarlo.
Per il client della console MySQL c'è qualcosa in più da considerare:il client sembra utilizzare il valore di configurazione del socket fornito in [client] invece di [mysqld]. Se hai una configurazione di più server MySQL come ho (4.1, 5.5, 5.7), probabilmente vorrai usare un'opzione "--defaults-extra-file" con il socket scritto nella parte [client] per ogni server diverso. Il socket deve essere uguale a quello definito nella parte my.cnf [mysqld] utilizzata sul server. Ecco un esempio defaults-extra-file.cnf, ricorda di modificare l'utente, la password e il socket in base alle tue esigenze - e tienilo con i diritti di accesso 400 (dopotutto c'è una password memorizzata):
[client]
user = guardian
password = I-4m.Gr00t!
host = localhost
socket = /var/run/mysqld/mysqld-5.6.sock
Questo vale solo se stai usando "localhost" come valore per "host". Se hai più indirizzi locali (127.0.0.2, 127.0.0.3), devi lasciare la variabile di configurazione per "host" su "localhost" per usare il socket configurato. Altrimenti il client si collegherà al server usando TCP.
Questo è stato testato sul mio server Debian 9.5 con MySQL 4.1.22, 5.5.49 e 5.7.19 e i rispettivi client.