Introduzione
Non è raro ospitare database e server Web sulla stessa macchina locale. Tuttavia, molte organizzazioni stanno ora passando a un ambiente più distribuito.
Un server di database separato può migliorare la sicurezza, le prestazioni hardware e consentire di ridimensionare rapidamente le risorse. In tali casi d'uso, imparare a gestire efficacemente le risorse remote è una priorità.
Questo tutorial mostra come abilitare le connessioni remote a un database MySQL.
Prerequisiti
- Accesso a una finestra di terminale/riga di comando
- Server MySQL remoto
- Sudo o root privilegi su macchine locali e remote
Connessione remota a MySQL Server
Consentire le connessioni a un server MySQL remoto è impostato in 3 passaggi:
- Modifica file di configurazione MySQL
- Configura firewall
- Connettiti al server MySQL remoto
Fase 1:modifica il file di configurazione MySQL
1.1 Accedi al file mysqld.cnf
Usa il tuo editor di testo preferito per aprire mysqld.cnf file. Questo esempio utilizza l'editor di testo nano in Ubuntu 18.04. Immettere il seguente comando nell'interfaccia della riga di comando per accedere al file di configurazione del server MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
La posizione del file può variare in base alla distribuzione e alla versione in uso. Se il file di configurazione MySQL non è la sua posizione predefinita, prova a utilizzare find
di Linux comando per rilevarlo.
1.2 Modifica dell'indirizzo IP di collegamento
Ora hai accesso al file di configurazione del server MySQL. Scorri verso il basso fino all'indirizzo di rilegatura riga e modificare l'indirizzo IP. L'attuale IP predefinito è impostato su 127.0.0.1. Questo IP limita le connessioni MySQL alla macchina locale.
Il nuovo IP dovrebbe corrispondere all'indirizzo della macchina che deve accedere al server MySQL in remoto. Ad esempio, se colleghi MySQL a 0.0.0.0, anche qualsiasi macchina che raggiunge il server MySQL può connettersi con esso.
Una volta apportate le modifiche necessarie, salva ed esci dal file di configurazione.
1.3 Riavvia il servizio MySQL
Applicare le modifiche apportate al file di configurazione MySQL riavviando il servizio MySQL:
sudo systemctl restart mysql
Successivamente, le impostazioni correnti del firewall devono essere modificate per consentire il traffico verso la porta MySQL predefinita.
Passaggio 2:imposta il firewall per consentire la connessione MySQL remota
Durante la modifica del file di configurazione, probabilmente hai notato che la porta MySQL predefinita è 3306 .
Se hai già configurato un firewall sul tuo server MySQL, devi aprire il traffico per questa porta specifica. Segui le istruzioni seguenti che corrispondono al tuo servizio firewall in uso.
Opzione 1:UFW (firewall semplice)
UFW è lo strumento firewall predefinito in Ubuntu. In una finestra del terminale, digita il seguente comando per consentire il traffico e abbinare l'IP e la porta:
sudo ufw allow from remote_ip_address to any port 3306
Il sistema conferma che le regole sono state aggiornate correttamente.
Opzione 2:FirewallD
Lo strumento di gestione firewalld in CentOS utilizza zone per stabilire quale traffico deve essere consentito.
Crea una nuova zona per impostare le regole per il traffico del server MySQL. Il nome della zona nel nostro esempio è mysqlrule e abbiamo utilizzato l'indirizzo IP del nostro esempio precedente 133.155.44.103 :
sudo firewall-cmd --new-zone=mysqlrule --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlrule --add-source=133.155.44.103
sudo firewall-cmd --permanent --zone=mysqlrule --add-port=3306/tcp
sudo firewall-cmd --reload
Hai aperto con successo la porta 3306 sul firewall.
Opzione 3:apri la porta 3306 con iptables
Gli iptables l'utilità è disponibile sulla maggior parte delle distribuzioni Linux per impostazione predefinita. Digita il seguente comando per aprire la porta MySQL 3306 al traffico illimitato:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
Per limitare l'accesso a un indirizzo IP specifico, utilizzare invece il seguente comando:
sudo iptables -A INPUT -p tcp -s 133.155.44.103 --dport 3306 -j ACCEPT
Questo comando concede l'accesso a 133.155.44.103. Dovresti sostituirlo con l'IP per la tua connessione remota.
È necessario salvare le modifiche apportate alle regole di iptables. In una distribuzione basata su Ubuntu, digita i seguenti comandi:
sudo netfilter-persistent save
sudo netfilter-persistent reload
Digita il comando successivo per salvare le nuove regole di iptables in CentOS:
service iptables save
Fase 3:connettiti al server MySQL remoto
Il tuo server remoto è ora pronto per accettare connessioni. Usa il comando seguente per stabilire una connessione con il tuo server MySQL remoto:
mysql -u username -h mysql_server_ip -p
Il -u username
nel comando rappresenta il tuo nome utente MySQL. Il -h mysql_server_ip
è l'IP o il nome host del tuo server MySQL. Il -p
l'opzione richiede di inserire la password per il nome utente MySQL.
Dovresti vedere un output simile a quello qui sotto:
Connection to mysql_server_ip 3306 port [tcp/mysql] succeeded!
Come concedere l'accesso remoto al nuovo database MySQL?
Se non hai ancora alcun database, puoi creare facilmente un database digitando il seguente comando nella tua shell MySQL:
CREATE DATABASE ‘yourDB’;
Per concedere l'accesso remoto a un database specifico:
GRANT ALL PRIVILEGES ON yourDB.* TO [email protected]’133.155.44.103’ IDENTIFIED BY ‘password1’;
Il nome del database, il nome utente, l'IP remoto e la password devono corrispondere alle informazioni che desideri utilizzare per la connessione remota.
Come concedere l'accesso remoto al database MySQL esistente
La concessione dell'accesso remoto a un utente per un database esistente richiede un insieme di due comandi:
update db set Host=’133.155.44.103' where Db='yourDB';
update user set Host=’133.155.44.103' where user='user1';
Utente1 ora è in grado di accedere al tuo DB da una postazione remota identificata dall'IP 133.155.44.103 .