Ho installato MySQL Community Edition 5.5 sul mio computer locale e voglio consentire connessioni remote in modo da poter connettermi da una fonte esterna.
Come lo posso fare?
sudo mysql_secure_installation
. FYI.
Ho installato MySQL Community Edition 5.5 sul mio computer locale e voglio consentire connessioni remote in modo da poter connettermi da una fonte esterna.
Come lo posso fare?
sudo mysql_secure_installation
. FYI.
Risposte:
Ciò è consentito per impostazione predefinita su MySQL.
Ciò che è disabilitato di default è l' root
accesso remoto . Se si desidera abilitarlo, eseguire questo comando SQL localmente:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Quindi trova la seguente riga e commentala nel tuo my.cnf
file, che di solito vive /etc/mysql/my.cnf
su sistemi Unix / OSX. In alcuni casi il percorso per il file è /etc/mysql/mysql.conf.d/mysqld.cnf).
Se si tratta di un sistema Windows, puoi trovarlo nella directory di installazione di MySQL, in genere qualcosa di simile C:\Program Files\MySQL\MySQL Server 5.5\
e il nome del file sarà my.ini
.
Cambia linea
bind-address = 127.0.0.1
per
#bind-address = 127.0.0.1
E riavvia il server MySQL ( Unix / OSX e Windows ) per rendere effettive le modifiche.
my.cnf
file e non trovano una bind-address
direttiva in esso, si noti che nel mio caso (versione MySQL 14.14 su Ubuntu 16.04.2) la posizione del file era/etc/mysql/mysql.conf.d/mysqld.cnf
Dopo aver fatto tutto quanto sopra, non riesco ancora ad accedere come da root
remoto, ma Telnetting alla porta lo ha 3306
confermatoMySQL
stava accettando le connessioni.
Ho iniziato a guardare gli utenti in MySQL e ho notato che c'erano più utenti root con password diverse.
select user, host, password from mysql.user;
Quindi in MySQL
ho impostato nuovamente tutte le password per root e ho potuto finalmente accedere in remoto come root
.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
Solo una nota della mia esperienza, puoi trovare il file di configurazione in questo percorso /etc/mysql/mysql.conf.d/mysqld.cnf
.
(Ho lottato per qualche tempo per trovare questo percorso)
sudo find /etc -iname 'mysql*.cnf'
Nel mio caso stavo cercando di connettermi a un server mysql remoto su cent OS. Dopo aver esaminato molte soluzioni (concessione di tutti i privilegi, rimozione dei collegamenti IP, abilitazione della rete) il problema non veniva ancora risolto.
A quanto pare, mentre cercavo varie soluzioni, mi sono imbattuto in iptables, il che mi ha fatto capire che la porta mysql 3306 non stava accettando le connessioni.
Ecco una piccola nota su come ho verificato e risolto questo problema.
telnet (mysql server ip) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCETTA
il servizio iptables si ferma
Spero che sia di aiuto.
Seguire i passaggi indicati di seguito per impostare l'accesso remoto con caratteri jolly per l'utente MySQL.
(1) Apri cmd.
(2) vai al percorso C: \ Programmi \ MySQL \ MySQL Server 5.X \ bin ed esegui questo comando.
mysql -u root -p
(3) Immettere la password di root.
(4) Eseguire il comando seguente per fornire l'autorizzazione.
CONCESSIONE DI TUTTI I PRIVILEGI SU *. * A "NOME UTENTE" @ "IP" IDENTIFICATO DA "PASSWORD";
NOME UTENTE: nome utente che si desidera connettere al server MySQL.
IP: indirizzo IP pubblico da cui si desidera consentire l'accesso al server MySQL.
PASSWORD: password del nome utente utilizzato.
L'IP può essere sostituito con% per consentire all'utente di connettersi da qualsiasi indirizzo IP.
(5) Svuota i pregiudizi seguendo il comando ed esci.
FLUSH PRIVILEGES;
Uscita; o \ q
Se il processo del server MySQL è in ascolto solo su 127.0.0.1 o :: 1, non sarà possibile connettersi in remoto. Se hai bind-address
un'impostazione/etc/my.cnf
questo potrebbe essere la fonte del problema.
Dovrai anche aggiungere privilegi anche per un non localhost
utente.
127.0.0.1
?
Se hai installato MySQL da brew
esso, in realtà è in ascolto solo sull'interfaccia locale per impostazione predefinita. Per risolvere il problema, è necessario modificare /usr/local/etc/my.cnf
e cambiare bind-address
da127.0.0.1
a*
.
Quindi corri brew services restart mysql
.
Tutto il processo per l'accesso remoto. L'accesso remoto è disattivato per impostazione predefinita. È necessario aprirlo manualmente per tutti gli IP .. per consentire l'accesso a tutti gli IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Ip specifico
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
poi
flush privileges;
Puoi controllare l'host utente e la password
SELECT host,user,authentication_string FROM mysql.user;
Ora il tuo dovere è cambiare questo
bind-address = 127.0.0.1
Puoi trovarlo su
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
se non lo trovi lì, prova questo
sudo nano /etc/mysql/my.cnf
commenta in questo
#bind-address = 127.0.0.1
Quindi riavviare Mysql
sudo service mysql restart
Ora goditi l'accesso remoto
Cordiali saluti Mi sono tolto i capelli con questo problema per ore .. finalmente ho chiamato il mio provider di hosting e ho scoperto che nel mio caso usando un server cloud che nel pannello di controllo per 1 e 1 hanno un firewall secondario che devi clonare e aggiungere porta 3306. Una volta aggiunto sono entrato subito ..
Questo blog Come configurare un server MySQL su Local Area Network sarà utile per configurare MySQL
da zero
E per le persone di OS X là fuori bisogna essere consapevoli del fatto che il parametro bind-address è in genere impostato nella finestra di avvio e non nel file my.ini. Quindi nel mio caso, ho rimosso <string>--bind-address=127.0.0.1</string>
da /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
Se mysqld
un indirizzo di bind è impostato su un indirizzo loopback / locale (ad es127.0.0.1
), Il server non sarà raggiungibile dagli host remoti, poiché non è possibile raggiungere un'interfaccia di loopback da nessun host remoto.
Impostare questa opzione su 0.0.0.0
(::
per IPv4 + 6) per accettare connessioni da qualsiasi host o verso un altro indirizzo raggiungibile esternamente se si desidera consentire connessioni solo su un'interfaccia.
L'abilitazione dell'accesso root remoto può essere pericolosa. Sarebbe preferibile impostare account utente con autorizzazioni più restrittive. I seguenti tre passaggi dovrebbero farlo.
Assicurati che la riga che inizia con bind-address ...
sia almeno commentata nel tuo file my.ini o my.cnf. Se non esiste, vai avanti. Puoi trovare questo file C:\ProgramData\MySQL\MySQL Server 8.0
su Windows.
Successivamente, controlla che l'account utente con cui stai stabilendo la connessione non sia presente localhost
nel campo Corrispondenza agli host. Sebbene non sia raccomandato, puoi invece inserirlo %
in quel campo a scopo di test. Puoi farlo aprendo una connessione locale al server con MySQL Workbench, quindi andando su Server> Utenti e privilegi dalla barra dei menu e trovando l'account utente con cui vuoi connetterti.
Il campo "Limita la corrispondenza degli host" è ciò che ti impedisce di connetterti non localmente. Cioè limita le connessioni accettate a un modello di indirizzi IP. Idealmente, dovresti accedere al server MySQL da un indirizzo IP statico o da una sottorete, in modo da poter essere il più restrittivo possibile.
alcune volte è necessario utilizzare il nome del PC su Windows
primo passo) inserisci il file di configurazione di mysql:
mysqld.cnf SET bind-address = 0.0.0.0
(per consentire di ricomporre le connessioni su tcp / ip)
secondo passo) rendere l'utente in mysql, utenti della tabella, con il nome del pc su Windows propierties, NON ip