Episode 19 - How To Enable Remote Access To MySQL Server on Windows Server
Sommario:
- Configurazione di MySQL Server
- Concessione dell'accesso a un utente da una macchina remota
- Configurazione del firewall
- iptables
- UFW
- FirewallD
- Verifica delle modifiche
- Conclusione
Per impostazione predefinita, il server MySQL è in ascolto delle connessioni solo da localhost, il che significa che è possibile accedervi solo dalle applicazioni in esecuzione sullo stesso host.
Tuttavia, in alcune situazioni, è necessario accedere al server MySQL dalla posizione remota. Ad esempio, quando si desidera connettersi al server MySQL remoto dal proprio sistema locale o quando si utilizza una distribuzione multi-server in cui l'applicazione è in esecuzione su un computer diverso dal server di database. Un'opzione sarebbe quella di accedere al server MySQL tramite il tunnel SSH e un'altra è quella di configurare il server MySQL per accettare connessioni remote.
In questa guida, seguiremo i passaggi necessari per consentire le connessioni remote a un server MySQL. Le stesse istruzioni valgono per MariaDB.
Configurazione di MySQL Server
Il primo passo è impostare il server MySQL per l'ascolto su uno specifico indirizzo IP o tutti gli indirizzi IP sulla macchina.
Se il server MySQL e i client possono comunicare tra loro su una rete privata, l'opzione migliore è impostare il server MySQL per l'ascolto solo sull'IP privato. Altrimenti, se si desidera connettersi al server su una rete pubblica, impostare il server MySQL per l'ascolto su tutti gli indirizzi IP sulla macchina.
Per fare ciò, è necessario modificare il file di configurazione di MySQL e aggiungere o modificare il valore dell'opzione
bind-address
. È possibile impostare un singolo indirizzo IP e intervalli IP. Se l'indirizzo è
0.0.0.0
, il server MySQL accetta connessioni su tutte le interfacce IPv4 dell'host. Se hai IPv6 configurato sul tuo sistema, quindi invece di
0.0.0.0
, usa
::
.
La posizione del file di configurazione di MySQL varia in base alla distribuzione. In Ubuntu e Debian il file si trova in
/etc/mysql/mysql.conf.d/mysqld.cnf
, mentre nelle distribuzioni basate su Red Hat come CentOS, il file si trova in
/etc/my.cnf
.
Apri il file con il tuo editor di testo:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Cerca una riga che inizia con
bind-address
e imposta il suo valore sull'indirizzo IP su cui un server MySQL dovrebbe essere in ascolto.
Per impostazione predefinita, il valore è impostato su
127.0.0.1
(ascolta solo in localhost).
In questo esempio, imposteremo il server MySQL per l'ascolto su tutte le interfacce IPv4 modificando il valore su
0.0.0.0
bind-address = 0.0.0.0 # skip-networking
Se è presente una riga contenente
skip-networking
, eliminala o commentala aggiungendo
#
all'inizio della riga.
In MySQL 8.0 e versioni successive, la direttiva
bind-address
potrebbe non essere presente. In questo caso, aggiungilo sotto il
sezione.
Al termine, riavviare il servizio MySQL per rendere effettive le modifiche. Solo i root o gli utenti con privilegi sudo possono riavviare i servizi.
Per riavviare il servizio MySQL su Debian o Ubuntu, digitare:
sudo systemctl restart mysql
Sulle distribuzioni basate su RedHat come CentOS per riavviare l'esecuzione del servizio:
Concessione dell'accesso a un utente da una macchina remota
Il passaggio successivo è consentire l'accesso al database all'utente remoto.
Accedi al server MySQL come utente root digitando:
sudo mysql
mysql -uroot -p
Dall'interno della shell MySQL, utilizzare l'istruzione
GRANT
per concedere l'accesso all'utente remoto.
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
Dove:
-
database_name
è il nome del database a cui l'utente si connetterà.user_name
è il nome dell'utente MySQL.ip_address
è l'indirizzo IP da cui l'utente si connetterà. Utilizzare%
per consentire all'utente di connettersi da qualsiasi indirizzo IP.user_password
è la password dell'utente.
Ad esempio, per concedere l'accesso a un
dbname
database a un utente chiamato
foo
con password
my_passwd
da un computer client con IP
10.8.0.5
, eseguire:
GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';
Configurazione del firewall
L'ultimo passaggio è configurare il firewall per consentire il traffico sulla porta
3306
(porta predefinita MySQL) dai computer remoti.
iptables
sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
Consenti accesso da un indirizzo IP specifico:
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW
UFW è lo strumento firewall predefinito in Ubuntu. Per consentire l'accesso da qualsiasi indirizzo IP su Internet (molto insicuro) eseguire:
sudo ufw allow 3306/tcp
Consenti accesso da un indirizzo IP specifico:
sudo ufw allow from 10.8.0.5 to any port 3306
FirewallD
FirewallD è lo strumento di gestione firewall predefinito in CentOS. Per consentire l'accesso da qualsiasi indirizzo IP su Internet (molto insicuro) digitare:
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
Per consentire l'accesso da un indirizzo IP specifico su una porta specifica, è possibile creare una nuova zona FirewallD o utilizzare una regola avanzata. Bene, crea una nuova zona chiamata
mysqlzone
:
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
Verifica delle modifiche
Per verificare che l'utente remoto possa connettersi al server MySQL, eseguire il comando seguente:
mysql -u user_name -h mysql_server_ip -p
Dove
user_name
è il nome dell'utente a cui è stato concesso l'accesso e
mysql_server_ip
è l'indirizzo IP dell'host su cui è in esecuzione il server MySQL.
Se tutto è configurato correttamente, sarai in grado di accedere al server MySQL remoto.
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
L'errore seguente indica che l'utente a cui stai tentando di accedere non dispone delle autorizzazioni per accedere al server MySQL remoto.
"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"
Conclusione
MySQL, il server di database open source più popolare per impostazione predefinita, ascolta le connessioni in entrata solo su localhost.
Per consentire connessioni remote a un server MySQL, è necessario eseguire le seguenti operazioni:
- Configura il server MySQL per l'ascolto su tutto o su un'interfaccia specifica. Concedi l'accesso all'utente remoto. Apri la porta MySQL nel tuo firewall.
Remote Desktop Connection Manager: Gestisci più connessioni desktop remote
Microsoft Remote Desktop Connection Manager o RDCMan gestisce più connessioni desktop remote ed è utile per la gestione dei server labs
Desktop remoto Organizer: Gestisci connessioni desktop remote
Desktop Desktop remoto è un client desktop remoto con scheda, che ti consente di organizzare facilmente tutte le connessioni desktop remoto in un unico luogo.
Utilizzo dell'app desktop remota in Windows 8 per le connessioni remote
Scopri come configurare e utilizzare l'app desktop remoto in Windows 8 per le connessioni remote.