Per esporre MySQL a qualcosa di diverso da localhost dovrai avere la seguente riga
Per MySQL versione 5.6 e precedenti
senza commenti in /etc/mysql/my.cnf
e assegnato al tuo computer l'indirizzo IP e non il loopback
Per MySQL versione 5.7 e successive
senza commento in /etc/mysql/mysql.conf.d/mysqld.cnf
e assegnato al tuo computer l'indirizzo IP e non il 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 arresta e riavvia MySQL con la nuova voce my.cnf. Una volta eseguito vai al terminale e inserisci il seguente comando.
lsof -i -P | grep :3306
Dovrebbe tornare qualcosa del genere con il tuo IP effettivo nelle xxx
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
Se l'istruzione di cui 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 quell'utente sia stato creato sia in localhost 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 base localhost e avere problemi di accesso. Se si desidera limitare l'accesso di myuser, è necessario leggere la sintassi dell'istruzione GRANT QUI Se riesci a superare tutto questo e hai ancora problemi, pubblica un output di errore aggiuntivo e le righe appropriate my.cnf.
NOTA:se lsof non ritorna o non viene trovato, puoi installarlo QUI in base alla tua distribuzione Linux. Non hai bisogno di lsof per far funzionare le cose, ma è estremamente utile quando le cose non funzionano come previsto.
AGGIORNAMENTO:anche dopo aver aggiunto/modificato il bind-address
in my.cnf
non ha funzionato, quindi vai a cambiarlo nel punto in cui è stato originariamente dichiarato:
/etc/mysql/mariadb.conf.d/50-server.cnf