Connessioni remote Mysql Ubuntu

Per qualche ragione, non riesco a collegarmi in remoto al mio server MySQL. Ho provato tutto e sto ancora ricevendo errori.

[email protected]:/home/administrator# mysql -u monty -p -h www.ganganadores.cl Enter password: ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES) 

Ora, ho provato a correre

  `GRANT ALL ON *.* to [email protected] IDENTIFIED BY 'XXXXX'; GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'XXXXXX';` 

e ancora niente! Cosa sto facendo di sbagliato?

EDIT: my.cnf ha commentato l’IP bind.

Per esporre MySQL a qualcosa di diverso da localhost dovrai avere la seguente riga

Per mysql versione 5.6 e seguenti

non commentato in /etc/mysql/my.cnf e assegnato al tuo computer indirizzo IP e non loopback

Per mysql versione 5.7 e successive

non commentato in /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 fermati 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 attuale in xxx

 mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN) 

Se l’affermazione sopra riportata viene restituita correttamente, sarà ansible accettare utenti remoti. Tuttavia, per consentire a un utente remoto di connettersi con i privilegi corretti, è necessario che l’utente abbia creato sia in localhost sia 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, è necessario leggere la syntax dell’istruzione GRANT QUI Se si riesce a risolvere questo problema e si riscontrano ancora problemi, pubblicare un output di errore aggiuntivo e le righe appropriate di 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.

Aggiungi alcuni punti in cima all’eccellente post di apesa:

1) Puoi usare il comando qui sotto per controllare l’indirizzo IP che il server mysql sta ascoltando

 netstat -nlt | grep 3306 sample result: tcp 0 0 xxx.xxx.xxx.xxx:3306 0.0.0.0:* LISTEN 

2) Usa FLUSH PRIVILEGES per forzare il caricamento delle tabelle di sovvenzione se per qualche motivo le modifiche non diventano immediatamente effettive

 GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION; GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT; 

3) Se il firewall netfilter è abilitato ( sudo ufw enable ) sul server mysql, fare quanto segue per aprire la porta 3306 per l’accesso remoto:

 sudo ufw allow 3306 

controllare lo stato usando

 sudo ufw status 

4) Una volta stabilita una connessione remota, può essere verificata in entrambi i client o server utilizzando i comandi

 netstat -an | grep 3306 netstat -an | grep -i established 

MySQL ascolta solo localhost, se vogliamo abilitare l’accesso remoto ad esso, allora abbiamo bisogno di fare alcune modifiche nel file my.cnf:

 sudo nano /etc/mysql/my.cnf 

Dobbiamo commentare l’indirizzo di bind e le linee di skip-external-locking:

 #bind-address = 127.0.0.1 # skip-external-locking 

Dopo aver apportato queste modifiche, è necessario riavviare il servizio mysql:

 sudo service mysql restart 

Se si esegue il test su Windows, non dimenticare di aprire la porta 3306.