Come consentire connessioni remote a MySQL


Se stai lavorando con uno Database MySQL, allora sei già consapevole delle sfide che devi affrontare per mantenere sicuro il tuo database. Dai tentativi di hacking del database che utilizzano le iniezioni SQL agli attacchi di forza bruta, è difficile mantenere i tuoi dati al sicuro, soprattutto se stai lavorando con un database in remoto.

Esistono modi per configurare un server SQL per consentire le connessioni remote. , ma devi stare attento, poiché consentire connessioni remote su un server MySQL può rendere il tuo database un facile bersaglio per gli hacker. Se desideri consentire connessioni remote e sicure a un database MySQL, ecco cosa devi sapere.

Sommario

    Prima di te Inizia

    Prima di apportare modifiche al database MySQL, è importante effettuare il backup del database, soprattutto se stai lavorando su un server di produzione (un server in uso attivo). Qualsiasi modifica apportata al database, o al server che lo ospita, potrebbe causare una grave perdita di dati se qualcosa va storto.

    Potresti anche scoprire che le modifiche alle connessioni del tuo server potrebbero impedirti di accedervi in ​​seguito. In tal caso, potrebbe essere necessario consultare un amministratore del server per ulteriore supporto. Una buona idea è provare qualsiasi modifica su un server MySQL eseguito localmente per verificare se le modifiche funzionano prima di provarle in remoto.

    È anche probabile che se stai apportando modifiche a un server remoto, tu' Avrò bisogno di un modo sicuro per connetterti e apportare modifiche. SSH (Secure Shell)è spesso il modo migliore per farlo, poiché ti consente di connetterti al tuo server remoto. Puoi anche utilizzare SSH per connetterti ai server della tua rete locale, come quelli ospitato su un Raspberry Pi.

    Questa guida ti guiderà attraverso i passaggi per configurare MySQL per consentire le connessioni remote, ma dovrai prima assicurarti di avere accesso diretto o remoto al server che ospita il tuo server MySQL.

    Supponiamo che tu non abbia accesso remoto al tuo server tramite SSH (ad esempio). In tal caso, non sarai in grado di configurare il tuo database MySQL per consentire connessioni remote direttamente a meno che il tuo account mySQL di root non consenta già connessioni remote. Quindi, dovrai stabilire questa connessione prima di poter procedere.

    Modifica del tuo file di configurazione MySQL

    Il primo passo nella configurazione di MySQL per consentire connessioni è modificare il file di configurazione di MySQL. A questo punto, questa guida presumerà che tu sia già connesso al server, al PC o al Mac che ospita il tuo database mySQL in remoto e che tu abbia accesso alla console.

    In alternativa, puoi configurare un server MySQL locale utilizzando un terminale aperto su Mac o Linux o un editor di testo su Windows.

    1. Per iniziare, usa il tuo editor di testo della console preferito per modificare il file del database MySQL. Su Linux, digita sudo nano /etc/mysql/mysql.conf.d/mysqld.cnfin un terminale o in una finestra SSH per modificare questo file utilizzando l'editor nano(supponendo il tuo database MySQL si trova nella posizione predefinita).
      1. Se stai utilizzando Windows, apri Esplora file e accedi alla cartella contenente la tua installazione di MySQL (es. C:/Programmi/MySQL/MySQL Server 8.0). Apri il file my.iniutilizzando il tuo editor di testo predefinito (ad es. Blocco note) facendo doppio clic sulla voce. Se non è presente, crea prima il file.
        1. Su Mac, apri una finestra di terminale e digita sudo nano /usr/local/etc/my.cnf. Questo è il file di configurazione predefinito per MySQL se hai installato MySQL usando homebrew.
        2. Le posizioni di cui sopra sono le posizioni predefinite per i file di configurazione di MySQL. Se questi comandi non funzionano, dovrai cercare i file pertinenti (my.cnf, mysqld.cnfo my.ini) manualmente per individuare il percorso del file pertinente.

          Impostazione di un intervallo IP di indirizzi di associazione sicuri

          1. Una volta Ho aperto il file di configurazione di MySQL per il tuo server, usa il tasto freccia della tastiera per raggiungere la sezione bind-addressdel file. Questo intervallo IP limita le connessioni al database, che in genere è impostato per consentire solo le connessioni dalla macchina o dal server locale utilizzando 127.0.0.1.
            1. Se desideri configurare il tuo database MySQL per consentire le connessioni dai dispositivi che utilizzano la tua connessione Internet corrente, trova il tuo indirizzo IP pubblico prima, quindi sostituisci 127.0.0.1con quell'indirizzo IP. In alternativa, sostituiscilo con un indirizzo IP per il dispositivo o il server da cui desideri consentire le connessioni.
              1. In alcune circostanze , potresti voler consentire tuttele connessioni remote a un database MySQL. Ciò comporta un rischio estremoe non dovrebbe essere utilizzato su un server di produzione. Se vuoi consentire ciò, tuttavia, sostituisci 127.0.0.1con 0.0.0.0.
                1. Prendere nota del valore portanella sezione Impostazioni di base. Questo sarà richiesto nella prossima sezione. Se non è visibile, verrà utilizzato il valore predefinito, ovvero la porta 3306. Puoi aggiungere la tua porta digitando port = xxxxsu una nuova riga, sostituendo xxxxcon un valore di porta adatto.
                  1. Una volta configurato bind-addressnel file di configurazione di MySQL, salva il file. Se sei su Linux, seleziona Ctrl + Oe Ctrl + Xper farlo. Su Mac, seleziona Comando + Oe Comando + X. Gli utenti Windows possono salvare selezionando File>Salva.
                    1. Successivamente, gli utenti Linux e Mac possono riavviare MySQL digitando mysql.server stop && mysql.server starto mysql.server restart. Potrebbe essere necessario elevare il comando usando sudo (es. sudo mysql.server restart) e utilizzare il percorso appropriato al file mysql.server (es. /usr /local/bin/mysql.server).
                    1.  Se il comando precedente non funziona, prova a sudo service mysql restart.
                      1. Per riavviare MySQL su Windows, apri una nuova finestra di PowerShell facendo clic con il pulsante destro del mouse sul menu Start e selezionando Windows PowerShell (amministratore). Nella finestra di PowerShell, digita net stop mysql80seguito da net start mysql80, sostituendo mysql80con il nome del servizio corretto sul tuo PC.
                      2. Se non sei sicuro del nome corretto del servizio su Windows, digita net startper trovarlo.Se non riesci a ricaricare la configurazione, riavvia il server e ricarica MySQL manualmente (se necessario).

                        Configurazione dei firewall

                        In questa fase, il tuo database MySQL dovrebbe consentire connessioni remote da dispositivi utilizzando l'indirizzo IP che hai impostato come valore bind-addressnel tuo file di configurazione MySQL (o da tutti i dispositivi se imposti questo valore su 0.0.0.0invece). Tuttavia, le connessioni verranno comunque bloccate dal tuo dispositivo o firewall di rete.

                        La maggior parte dei server e dei PC utilizza un firewall per bloccare le connessioni a meno che non venga concesso l'accesso a una porta specifica. I passaggi per configurarlo variano a seconda che tu stia eseguendo MySQL su Windows o Linux. I firewall Mac sono disabilitati per impostazione predefinita, quindi non dovresti aver bisogno di completare ulteriori passaggi qui.

                        Configura i firewall Linux

                        Molti server Linux usano iptablescome utility firewall predefinita. Puoi configurarlo seguendo i passaggi seguenti.

                        1. Apri un terminale o una connessione SSH e digita sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT. Sostituisci XXXXcon l'indirizzo IP del dispositivo da cui desideri consentire le connessioni MySQL dae sostituisci YYYYcon il valore della porta corrispondente dalla tua configurazione MySQL (es. 3306).
                          1. Questo configurerà temporaneamente il firewall. Se stai utilizzando un server Linux basato su Debian o Ubuntu, rendi permanente questa modifica digitando sudo netfilter-persistent savee sudo netfilter-persistent reloadnel terminale o SSH window.
                          2. Se iptables non è lo strumento firewall predefinito per la tua distribuzione Linux, dovrai consultare il manuale utente della tua distribuzione per ulteriori informazioni. Se alcuni pacchetti (come netfilter-persistent) non sono disponibili, usa lo strumento di repository del software della tua distribuzione per installarlo (es. sudo apt install netfilter-persistent).

                            Configura Windows Firewall

                            Se stai utilizzando un PC o un server Windows per ospitare il tuo database, puoi configurare il tuo firewall seguendo questi passaggi:

                            1. Fai clic con il pulsante destro del mouse sul menu Start e seleziona Esegui.
                              1. Nella casella Esegui, digita wf.msce seleziona OK.
                                1. Nella finestra Windows Defender, seleziona Regole in entrata >Nuova regola.
                                  1. Nella Creazione guidata nuova regola in entrata, seleziona Porta>Avanti.
                                    1. Nel menu successivo, seleziona TCPdalle opzioni, digita 3306(o il valore della porta elencato nel file di configurazione di MySQL), quindi seleziona Avanti.
                                      1. Nel menu Azione, lascia l'opzione predefinita su Consenti la connessioneabilitata, quindi seleziona Avanti.
                                        1. Conferma desideri che la regola venga applicata a tutti i tipi di rete, quindi seleziona Avanti.
                                          1. Digitare un nome descrittivo per la regola (es. MySQL) nella porta fornita , quindi seleziona Fineper aggiungerlo all'elenco delle regole del firewall.
                                          2. Se hai problemi di connessione, ripeti questi passaggi sopra , assicurandoti di creare una nuova regola in uscitanelle impostazioni del firewall utilizzando gli stessi dettagli (porta 3306 e così via). Potrebbe anche essere necessario configurare il router di rete locale su aprire le porte bloccate necessarie per consentire le connessioni in entrata e in uscita al database.

                                            Connessione a un server remoto tramite MySQL

                                            Dopo aver configurato il database MySQL per consentire le connessioni remote, dovrai effettivamente stabilire una connessione ad esso. Puoi farlo utilizzando il comando mysql(mysql.exesu Windows) da un terminale o da una finestra di PowerShell.

                                            Se stai utilizzando Windows, dovrai assicurarti che MySQL è installato localmente prima di iniziare. Gli utenti Mac possono installare MySQL usando homebrew dal terminale (brew install mysql), mentre gli utenti Linux possono utilizzare il proprio repository di app locale (es. sudo apt install mysql) per installare i pacchetti necessari.

                                            Connessione a MySQL su Linux o Mac

                                            1. Per connettersi al server MySQL remoto su Mac o Linux, apri una nuova finestra di terminale e digita mysql -u username -h XXXX:XXXX -p. Sostituisci XXXX:XXXXcon l'indirizzo IP e il numero di porta del tuo server remoto (ad es. 100.200.100.200:3306) e nome utentecon il tuo nome utente MySQL.
                                              1. Quando richiesto, conferma la password. Se la connessione ha esito positivo, verrà visualizzato un messaggio di successo nel terminale.
                                              2. Connessione a MySQL su Windows

                                                1. Per connettersi a un server MySQL remoto su Windows, apri una nuova finestra di PowerShell facendo clic con il pulsante destro del mouse sul menu Start e selezionando Windows PowerShell (amministratore).
                                                  1. Nella nuova finestra di PowerShell, digita cd “C:\Program Files\MySQL\MySQL Workbench 8.0\” per accedere alla cartella corretta, sostituendo questa directory con la directory di installazione corretta sul tuo PC. Ad esempio, se la tua versione di MySQL è 8.0.1, usa invece la cartella MySQL Workbench 8.0.1.
                                                    1. Da lì, digita .\mysql.exe -u nome utente -h X.X.X.X:XXXX -p. Sostituisci XXXX:XXXXcon l'indirizzo IP del tuo server remoto e il numero di porta (es. 100.200.100.200:3306) e nome utentecon un nome utente MySQL che consente l'accesso remoto (come root). Segui eventuali istruzioni aggiuntive sullo schermo.
                                                    2. Fornisci la tua password, quando richiesto, per completare la procedura di accesso e accedere al tuo database MySQL in remoto.
                                                    3. Se non funziona, connettiti al server o al PC che ospita il tuo server MySQL utilizzando SSH (o accedi direttamente) seguendo questi passaggi e utilizzando l'argomento -h localhost. È quindi possibile creare un account utente adatto seguendo i passaggi seguenti.

                                                      Consentire l'accesso utente remoto a un database MySQL

                                                      A questo punto, dovresti essere in grado di connettersi al tuo server MySQL in remoto utilizzando l'account utente root del tuo server o un altro account utente con privilegi elevati. Poiché questo livello di accesso non è sicuro, potresti preferire creare un account più limitato per accedere al tuo database MySQL.

                                                      Questo account avrà accesso limitato al tuo server MySQL, consentendogli di interagire solo con database selezionati. Non sarà in grado di apportare modifiche più serie, come l'accesso ad altri dati del database, la creazione di nuovi account utente, ecc. 

                                                      Dovrai avere la possibilità di accedere al tuo server MySQL in remoto. Se non puoi utilizzare il tuo account di root in remoto, dovrai accedere alla shell del tuo server utilizzando il comando mysqltramite una connessione SSH remota o accedendo direttamente al PC o al server che ospita il server.

                                                      1. Nella tua shell MySQL remota (usando lo strumento mysql), digita CREATE USER “username”@”xxxx” IDENTIFICATO DA “password”;e seleziona Invio. Sostituisci nome utentecon il nome utente che desideri creare, xxxxcon l'indirizzo IP da cui desideri connetterti e passwordcon una password adatta.
                                                        1. Dovrai concedere al tuo nuovo account le autorizzazioni necessarie. Per fare ciò, digita GRANT ALL ON databasename.* TO username@”x.x.x.x”;e sostituisci nomedatabase, nome utentee x.x.x.x con i dettagli corretti. Se lo desideri, sostituisci nomedatabasecon *per concedergli l'accesso a tutti i database.
                                                        2. Con l'accesso concesso, segui i passaggi nella sezione precedente per connetterti al tuo server in remoto utilizzando il tuo nuovo account (es. mysql -u username -h XXXX:XXXX -p).

                                                          Protezione dei dati del database

                                                          Sia che tu stia lavorando con MySQL o con un altro tipo di SQL database, è importante proteggere le connessioni per mantenere la sicurezza dei dati. Un buon modo per farlo è generare chiavi SSH per l'accesso remoto sul tuo server, piuttosto che fare affidamento su password obsolete (e facilmente indovinabili).

                                                          Se sei preoccupato per la perdita di dati, puoi facilmente eseguire il backup del database online. La maggior parte dei database viene eseguita utilizzando server Linux: puoi automatizza facilmente un backup di file Linux. Se stai eseguendo MySQL su Windows, puoi configurare un sistema di backup automatico per Windows simile, che ti consente di ripristinare i tuoi dati in caso di emergenza.

                                                          Post correlati:


                                                          9.08.2021