Host ‘xxx.xx.xxx.xxx’ non può connettersi a questo server MySQL

Questo dovrebbe essere semplicemente semplice, ma non riesco a farlo funzionare per la vita di me.
Sto solo cercando di connetterti in remoto al mio server MySQL.

collegamento come

mysql -u root -h localhost -p 

funziona bene, ma provando

 mysql -u root -h 'any ip address here' -p 

fallisce con l’errore

 ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server 

Nella tabella mysql.user , esiste esattamente la stessa voce per utente ‘root’ con host ‘localhost’ come un altro con host ‘%’.

    Sono alla fine, e non ho idea di come procedere. Tutte le idee sono benvenute.

    Forse una precauzione di sicurezza. Potresti provare ad aggiungere un nuovo account amministratore:

     mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' -> WITH GRANT OPTION; mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' -> WITH GRANT OPTION; 

    Sebbene Pascal e altri abbiano notato che non è una buona idea avere un utente con questo tipo di accesso aperto a qualsiasi IP. Se è necessario un utente amministrativo, utilizzare root e lasciarlo su localhost. Per qualsiasi altra azione specificare esattamente i privilegi necessari e limitare l’accessibilità dell’utente come suggerito da Pascal di seguito.

    Modificare:

    Dalle FAQ MySQL:

    Se non riesci a capire perché ottieni Accesso negato, rimuovi dalla tabella utente tutte le voci che hanno valori Host contenenti caratteri jolly (voci che contengono caratteri ‘%’ o ‘_’). Un errore molto comune è inserire una nuova voce con Host = ‘%’ e User = ‘some_user’, pensando che questo ti permetta di specificare localhost per connettersi dalla stessa macchina. Il motivo per cui questo non funziona è che i privilegi predefiniti includono una voce con Host = ‘localhost’ e User = ”. Poiché tale voce ha un valore host ‘localhost’ che è più specifico di ‘%’, viene utilizzato preferibilmente alla nuova voce quando si connette da localhost! La procedura corretta consiste nell’inserire una seconda voce con Host = ‘localhost’ e User = ‘some_user’, o per cancellare la voce con Host = ‘localhost’ e User = ”. Dopo aver eliminato la voce, ricorda di inviare un’istruzione FLUSH PRIVILEGES per ricaricare le tabelle di sovvenzione. Vedere anche la Sezione 5.4.4, “Controllo degli accessi, Fase 1: Verifica della connessione”.

    È necessario creare un new MySQL User e assegnare i privilegi come indicato di seguito nel Query prompt tramite phpMyAdmin o prompt dei comandi:

     CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION; CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; 

    Una volta fatto con tutte e quattro le domande, dovrebbe connettersi con username / password

    Il mio messaggio di errore era simile e diceva che ” Host XXX non può connettersi a questo server MySQL ” anche se stavo usando root. Ecco come assicurarsi che la root abbia i permessi corretti.

    La mia configurazione :

    • Ubuntu 14.04 LTS
    • MySQL v5.5.37

    Soluzione

    1. Apri il file sotto ‘etc / mysql / my.cnf’
    2. Controlla:

      • porta (di default è ‘porta = 3306’)
      • bind-address (per impostazione predefinita si tratta di ‘bind-address = 127.0.0.1’; se si desidera aprire a tutti, basta commentare questa riga. Per il mio esempio, dirò che il server attuale è il 10.1.1.7)
    3. Ora accedi al database MySQL sul tuo server attuale (ad esempio, il tuo indirizzo remoto è 123.123.123.123 alla porta 3306 come utente ‘root’ e voglio modificare le autorizzazioni sul database ‘dataentry’. Ricorda di cambiare l’indirizzo IP, la porta e il nome del database alle tue impostazioni)

       mysql -u root -p Enter password:  mysql>GRANT ALL ON *.* to [email protected]'123.123.123.123' IDENTIFIED BY 'put-your-password'; mysql>FLUSH PRIVILEGES; mysql>exit 
    4. sudo service mysqld restart

    5. Ora dovresti essere in grado di connettersi a distanza al tuo database. Ad esempio, sto utilizzando MySQL Workbench e inserendo “Nome host: 10.1.1.7”, “Porta: 3306”, “Nome utente: root”

    È necessario concedere l’accesso all’utente da qualsiasi nome host.

    Ecco come aggiungi nuovi privilegi da phpmyadmin

    Vai a Privilegi> Aggiungi un nuovo utente

    inserisci la descrizione dell'immagine qui

    Seleziona Qualsiasi host per il nome utente desiderato

    inserisci la descrizione dell'immagine qui

    Basta eseguire i seguenti passaggi:

    1) Connetti a mysql

     mysql -uroot -p 

    2) Crea utente

     CREATE USER 'user'@'%' IDENTIFIED BY 'password'; 

    3) Concedere le autorizzazioni

      GRANT ALL PRIVILEGES ON \*.\* TO 'user'@'%' WITH GRANT OPTION; 

    4) Priviledges a livello

     FLUSH PRIVILEGES; 

    Il messaggio *Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server è una risposta dal server MySQL al client MySQL. Si noti come restituisce l’indirizzo IP e non il nome host.

    Se si sta tentando di connettersi con mysql -h -u -p e restituisce questo messaggio con l’indirizzo IP, il server MySQL non è in grado di eseguire una ricerca inversa sul client. Questo è fondamentale perché questo è come associa il client MySQL alle concessioni.

    Assicurati di poter eseguire un nslookup dal server MySQL. Se ciò non funziona, non c’è nessuna voce nel server DNS. In alternativa, è ansible inserire una voce nel file HOSTS del server MySQL ( <- l'ordine potrebbe essere ).

    Una voce nel file host del mio server che consente una ricerca inversa del client MySQL ha risolto proprio questo problema.

    Se si modificano manualmente le tabelle di sovvenzione (utilizzando INSERT, UPDATE, ecc.), È necessario eseguire un’istruzione FLUSH PRIVILEGES per comunicare al server di ricaricare le tabelle di assegnazione.

    PS: Non consiglierei di permettere a nessun host di connettersi per qualsiasi utente (specialmente non l’uso di root ). Se stai usando mysql per un’applicazione client / server, preferisci un indirizzo di substring. Se si utilizza mysql con un server Web o un server applicazioni, utilizzare IP specifici.

    modo semplice è quello di accedere a phpmyadmin con l’account di root, lì goto mysql database e selezionare la tabella degli utenti, lì modificare l’account di root e nel campo host aggiungere% wild card. e poi attraverso i privilegi di ssh flush

      FLUSH PRIVILEGES; 

    Basta usare l’interfaccia fornita da MySql’s GUI Tool (SQLyog):

    Clicca su User manager: inserisci la descrizione dell'immagine qui

    Ora, se vuoi concedere l’accesso PER QUALSIASI ALTRO PC REMOTO, assicurati che, proprio come nell’immagine sottostante, il valore del campo Host sia% (che è il carattere jolly)

    inserisci la descrizione dell'immagine qui

    Se questa è una recente installazione di mysql, quindi prima di cambiare qualcos’altro, prova semplicemente ad eseguire questo comando e poi riprova:

     flush privileges; 

    Questo da solo risolve il problema per me su Ubuntu 16.04, mysql 5.7.20. YMMV.

    Bene, quello che puoi fare è aprire il file mysql.cfg e devi modificare Bind-address con questo

    bind-address = 127.0.0.1

    e poi riavvia mysql e sarai in grado di connetterti a questo server.

    Guarda questo, puoi avere un’idea del modulo.

    questo è vero sol

    Se ti capita di essere in esecuzione su Windows; Una soluzione semplice è eseguire la procedura guidata di configurazione dell’istanza del server MySQL. È nel tuo gruppo MySQL nel menu di avvio. Nel secondo dall’ultima schermata, fai clic sulla casella “Autorizza l’accesso root da macchine remote”.

    La maggior parte delle risposte qui mostra come creare utenti con due valori host: uno per localhost e uno per % .

    Si noti che, ad eccezione di un utente di localhost incorporato come root, non è necessario farlo. Se vuoi semplicemente creare un nuovo utente che può accedere da qualsiasi luogo, puoi utilizzare

     CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword'; GRANT  ON  TO myuser; 

    e funzionerà bene. (Come altri hanno già detto, è una pessima idea concedere privilegi amministrativi a un utente da qualsiasi dominio.)

    Basta trovare un modo migliore per farlo dal tuo pannello di controllo di hosting (sto usando DirectAdmin qui)

    semplicemente vai al DB del server di destinazione nel tuo pannello di controllo, nel mio caso: gestione MySQL -> seleziona il tuo DB -> troverai: “Accedi agli host”, aggiungi semplicemente il tuo host remoto qui e il suo funzionamento ora! inserisci la descrizione dell'immagine qui

    Immagino che ci sia un’opzione simile su altri pannelli C. come plesk, ecc.

    Spero sia stato utile anche a te.

    Stavo anche affrontando lo stesso problema. L’ho risolto in 2 minuti per me ho solo lista bianca ip attraverso cpanel

    Supponiamo che stiate cercando di connettere il database del server B dal server A. Andate su Server B Cpanel-> MySQL remoto-> inserite il Server A Indirizzo IP e il gioco è fatto.

    Problema: root @ localhost non è in grado di connettersi a una nuova installazione di mysql-community-server su openSUSE 42.2-1.150.x86_64. Mysql rifiuta le connessioni – periodo.

    Soluzione:

     $ ls -l /var/lib/mysql/mysql/user.* -rw-rw---- 1 mysql mysql 0 Apr 29 19:44 /var/lib/mysql/mysql/user.MYD -rw-rw---- 1 mysql mysql 1024 Apr 29 19:44 /var/lib/mysql/mysql/user.MYI -rw-rw---- 1 mysql mysql 10684 Apr 29 19:44 /var/lib/mysql/mysql/user.frm 

    File user.MYD ha dimensione 0 (davvero?!). Ho copiato tutti e 3 i file da un altro sistema funzionante.

     $ /usr/sbin/rcmysql stop $ cd /var/lib/mysql/mysql/ $ scp [email protected]:/var/lib/mysql/mysql/user.* ./ $ /usr/sbin/rcmysql start $ cd - $ mysql -u root -p 

    Sono stato in grado di accedere. Quindi, si trattava solo di ri-applicare tutti i privilegi dello schema. Inoltre, se hai disabilitato IPv6, ritriggerslo temporaneamente così che anche l’account root @ :: 1 possa funzionare.

    Questa risposta potrebbe aiutare qualcuno …

    Tutte queste risposte non hanno aiutato, poi mi sono reso conto di aver dimenticato di controllare una cosa cruciale .. La porta 🙂

    Ho mysql in esecuzione in un contenitore docker in esecuzione su una porta diversa. Stavo indicando il mio computer host sulla porta 3306, su cui ho un server mysql in esecuzione. Il mio contenitore espone il server sulla porta 33060. Quindi, per tutto questo tempo, stavo guardando il server sbagliato! doh!

    Nella remota possibilità che qualcuno di fronte a questo problema lo stia provando da SQLyog, è successo:

    Mi ero collegato al database remoto (da SQLyog) e ho lavorato per alcune ore. Successivamente ho lasciato il sistema per alcuni minuti, poi sono tornato per continuare il mio lavoro – ERRORE 1130 ! Niente di quello che ho provato ha funzionato Il riavvio di SQLyog non ha risolto il problema. Quindi ho riavviato il sistema – ancora non ha funzionato.

    Così ho provato a connettermi dal terminale – ha funzionato. Quindi ritentalo su SQLyog … e ha funzionato. Non riesco a spiegarlo se non “stranezza al computer casuale”, ma penso che potrebbe aiutare qualcuno.

    se stai cercando di eseguire mysql query senza definire connectiontring, otterrai questo errore.

    Probabilmente hai dimenticato di definire la stringa di connessione prima dell’esecuzione. hai controllato questo? (Scusa per il pessimo inglese)

    Tutte le risposte qui non hanno funzionato nel mio caso quindi mi piacerebbe che questo possa aiutare gli altri utenti in futuro. Questo può anche essere un problema nel nostro codice, non solo in MySQL da solo.

    Se stai usando VB.NET

    Invece di questo codice:

      Dim server As String = My.Settings.DB_Server Dim username As String = My.Settings.DB_Username Dim password As String = My.Settings.DB_Password Dim database As String = My.Settings.DB_Database MysqlConn.ConnectionString = "server=" & server & ";" _ & "user id=" & username & ";" _ & "password=" & password & ";" _ & "database=" & database MysqlConn = New MySqlConnection() 

    È necessario spostare MysqlConn = New MySqlConnection() sulla prima riga. Quindi sarebbe come questo

      MysqlConn = New MySqlConnection() Dim server As String = My.Settings.DB_Server Dim username As String = My.Settings.DB_Username Dim password As String = My.Settings.DB_Password Dim database As String = My.Settings.DB_Database MysqlConn.ConnectionString = "server=" & server & ";" _ & "user id=" & username & ";" _ & "password=" & password & ";" _ & "database=" & database