GNU/Linux >> Linux Esercitazione >  >> Linux

[Risolto] L'host non può connettersi a questo server MySQL

Gli sviluppatori di applicazioni potrebbero incontrare difficoltà nella connessione a un database ospitato su un server diverso dal server locale. In questo articolo, risolveremo un errore comune che si verifica quando ci si connette a un database MySQL in remoto dall'esterno della rete o da un altro host.

SQLSTATE[HY000] [1130] Host '172.19.0.11' is not allowed to connect to this MySQL server si verifica un errore quando la richiesta di connessione viene rifiutata dal server MySQL. Per impostazione predefinita, il server MySQL accetta solo connessioni da host locali e non da altri host.

Per abilitare le connessioni remote, dobbiamo eseguire i seguenti passaggi –

  1. Abilita connessioni remote dalla configurazione
  2. Crea un nuovo utente e consentigli di connettersi al server del database dall'host specifico (o da tutti gli host)
  3. Privilegi di risciacquo

Abilita connessioni remote dalla configurazione MySQL

Apri la configurazione di MySQL usando il tuo editor di testo preferito, come nano. Il file MySQL si trova solitamente in /etc/mysql/my.cnf o /etc/my.cnf o /etc/mysql/mysql.conf.d/mysqld.cnf . La posizione del file di configurazione di MySQL dipende dalla versione di MySQL che stai utilizzando. Controlla tutte queste posizioni per vedere se riesci a trovare il file di configurazione. Unisciti al nostro server Discord e facci sapere se non hai ancora trovato il file di configurazione. Forse possiamo aiutarti.

Una volta trovato il file di configurazione, aprilo e commenta la riga bind-address = 127.0.0.1 .

Basta aggiungere # prima della riga per commentarlo.

# bind-address = 127.0.0.1

Crea nuovo utente MySQL

Creiamo un utente mysql con l'host come 'localhost' per uso locale, ma quando aggiungiamo un utente per connessioni remote, dobbiamo sostituire localhost con l'indirizzo IP del computer remoto.

Accedi a MySQL come root –

sudo mysql

Or

mysql -u root -p

A seconda del metodo selezionato, ti verrà chiesto di inserire la password. Se stai usando il secondo metodo, inserisci la password dell'utente root MySQL o sudo password se accedi con sudo .

Una volta nella riga di comando di MySQL, crea un nuovo utente –

> CREATE USER 'username'@'ip-address' IDENTIFIED BY 'set-password';
Sostituisci "nome utente ‘ con il nome utente desiderato, ‘imposta-password ' con la password complessa e 'indirizzo IP ' con l'indirizzo IP remoto nel comando precedente.

Dovresti vedere il seguente messaggio se il nuovo utente è stato creato –

Query OK, 0 rows affected (0.02 sec)

Ora daremo all'utente appena creato le autorizzazioni per gestire un database specifico sul server. Possiamo anche concedere a questo utente l'accesso a tutti i database sul server, ma questo non è raccomandato. Ti consiglio di creare un nuovo database per le tue applicazioni e di concedere a questo utente le autorizzazioni per gestire i database.

> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'ip-address';
Sostituisci il nome utente nel comando precedente con il nome utente effettivo e l'indirizzo IP con l'indirizzo IP del computer remoto (host).

Al termine, svuota i privilegi per rendere effettive le modifiche.

> FLUSH PRIVILEGES;

Consenti tutte le connessioni remote

Come nel comando precedente, ho chiesto di sostituire l'indirizzo IP con l'indirizzo IP del computer remoto. Saranno consentite solo le connessioni da quel computer remoto. Tuttavia, possiamo anche utilizzare il carattere jolly "%" per consentire tutte le connessioni, indipendentemente dal fatto che provengano dal tuo computer o da quel tizio del seminterrato che ha bisogno di accedere al tuo database per motivi personali. 😉 Dovranno però inserire le credenziali corrette per accedere al database.

> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';

Se il server del database è in produzione, si consiglia vivamente di non utilizzare '%' carattere jolly.

Consenti connessioni da un intervallo di indirizzi IP

Se i server remoti si trovano sulla stessa rete, i loro indirizzi IP possono essere facilmente autorizzati a consentire connessioni remote senza la necessità di più utenti MySQL.

> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'172.19.0.*';

Nota come l'ultimo ottetto dell'indirizzo IP è stato sostituito con * nel comando sopra. Ciò consente a tutti i server con quell'indirizzo IP di iniziare con 172.19.0.


Linux
  1. Impossibile connettersi al database; L'utente esiste nel database, ma non a livello di server

  2. Connettiti a un server cloud

  3. Connettiti a un database MySQL da remoto

  4. Ecco come funziona un server Linux

  5. Impossibile connettersi all'errore 111 del server MySQL

Errore del server FTP RHEL7:ftp:connessione:nessun percorso verso la soluzione host

Come ospitare un sito Web su NGINX Web Server

Come utilizzare SSH per connettersi a un server remoto

Server database MySQL

Il client FTP non si connetterà al server FTP Microsoft

Come connettersi a MySQL usando PHP