Per esporre MySQL a qualcosa di diverso da localhost dovrai avere la seguente riga
Per mysql versione 5.6 e precedenti
non commentato /etc/mysql/my.cnf
e assegnato al tuo computer indirizzo IP e non loopback
Per mysql versione 5.7 e successive
non commentato /etc/mysql/mysql.conf.d/mysqld.cnf
e assegnato al tuo computer indirizzo IP e non loopback
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
Oppure aggiungi un
bind-address = 0.0.0.0
se non vuoi specificare l'IP
Quindi arrestare e riavviare MySQL con la nuova voce my.cnf. Una volta in esecuzione, vai al terminale e inserisci il seguente comando.
lsof -i -P | grep :3306
Dovrebbe tornare qualcosa del genere con il tuo IP effettivo nel xxx
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
Se l'istruzione sopra viene restituita correttamente, sarai quindi in grado di accettare utenti remoti. Tuttavia, affinché un utente remoto si connetta con i privilegi corretti, è necessario che tale utente venga creato sia nell'host locale che in '%' come in.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
poi,
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
e infine,
FLUSH PRIVILEGES;
EXIT;
Se non hai lo stesso utente creato come sopra, quando accedi localmente potresti ereditare i privilegi di localhost di base e avere problemi di accesso. Se si desidera limitare l'accesso a myuser, sarà necessario leggere la sintassi dell'istruzione GRANT QUI .
NOTA: Se lsof non ritorna o non viene trovato, puoi installarlo QUI in base alla tua distribuzione Linux. Non è necessario lsof per far funzionare le cose, ma è estremamente utile quando le cose non funzionano come previsto.