Mysql
 sql >> Database >  >> RDS >> Mysql

Connessione MySQL non funzionante

Ecco un rapido elenco di controllo per abilitare le connessioni remote per MySQL ma leggere prima (6). Se ho perso qualcosa, sentiti libero di modificare.

1) Il tuo utente remoto si sta connettendo tramite un account che è stato creato con user,host appropriato voci (guarda l'output da select user,host from mysql.user order by 1,2 ). In caso contrario, esamina CREATE USER e/o GRANT comandi. Esamina l'output di SHOW GRANTS per l'utente.

2) Hai eseguito flush privileges; (Alcuni dicono che non è necessario, altri dicono che lo è).

3a) Individua il tuo file di configurazione mysql a cui si fa riferimento in 3b) di seguito rivedendo le informazioni in Questo documento (o per Windows, probabilmente giù per C:\ProgramData\MySQL\MySQL Server 5.NNN il percorso). Varia in base alla distribuzione per Linux.

3b) Hai modificato e salvato my.ini (Windows) o my.cnf (Linux) e modificato bind-address lontano da 127.0.0.1 o localhost , a favore di 0.0.0.0 . E hai creato e eliminata la seguente riga:#skip-networking . Sembrerà simile a questo:

[mysqld]
bind-address=0.0.0.0
#skip-networking

4) Riavvia il demone MySQL. Come si fa questo varia in base alla distribuzione.

5) Problemi con il firewall. Assicurati che la porta, di default sia 3306 , è aperto al mondo esterno (che potrebbe essere solo la tua intranet). Ciò include qualsiasi altro livello di firewall, come gruppi di sicurezza AWS EC2 o simili, se presenti.

6) Comprendere che esiste un rischio per la sicurezza associato a questo. A meno che tu non sia a conoscenza di esporre il tuo server MySQL a connessioni remote, non eseguire questa operazione.

7) Esegui frequenti valutazioni di sicurezza con select dichiarazione elencata al punto 1. sopra, inclusa la revisione di SHOW GRANTS per quegli utenti. Non concedere inutilmente agli utenti caratteri jolly. Piuttosto, dai agli utenti i privilegi minimi per portare a termine il proprio lavoro.

8) Esaminare frequentemente i tentativi di connessione falliti tramite il Registro generale e il Registro errori come brevemente introdotto di seguito.

Per l'inbound, puoi guardare il registro delle query generali.

select @@general_log; -- a 1 indicates it is turned on for capture
select @@general_log_file; -- the file that it logs to

Quindi tutte le query possono essere connesso al Registro delle query generali se l'impostazione è attivata. Esamina il registro per "connetti", ma soprattutto per Access denied for user per vedere i tentativi falliti. Fallo regolarmente (non ogni pochi anni). Lo faccio almeno due volte al giorno. Nota, puoi ovviamente automatizzare la segnalazione tramite un programma esterno. Il mondo esterno sta per martellare il tuo server per entrare come nell'immagine qui sotto. È una realtà; preparati per questo.

Consulta la pagina del manuale per Il registro degli errori inoltre, annotando i livelli di avviso e le impostazioni di dettaglio in base alla tua versione.

Consiglierei di creare una copia di backup per data (denominata come tale) ed eliminare i file di registro dopo il backup per ricominciare da capo dopo il backup. I file di registro possono crescere rapidamente di dimensioni enormi, in particolare il registro generale. Non dimenticare se hai attivato o disattivato l'impostazione per la registrazione.

Puoi utilizzare i due log per determinare se il tuo tentativo di connessione ha superato il firewall durante i passaggi qui.