androide

Come consentire connessioni remote al server di database mysql

Episode 19 - How To Enable Remote Access To MySQL Server on Windows Server

Episode 19 - How To Enable Remote Access To MySQL Server on Windows Server

Sommario:

Anonim

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

mysqld.cnf

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:

sudo systemctl restart mysqld

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:

  1. 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.
mysql mariadb