Come associare il server MySQL a più di un indirizzo IP?


260

Esiste un modo segreto per associare MySQL a più di un indirizzo IP?

Per quanto posso vedere il parametro bind-address in my.cnf non supporta più di un IP e non puoi averlo più di una volta.

Risposte:


242

No, non c'è (ho appena verificato 1 ora fa). Puoi commentare l'indirizzo bind in my.cnf:

#skip-networking
#bind-address                   = 127.0.0.1

Se desideri solo 2 IP, dovrai utilizzare un firewall.


31
Corretta. Il bind è limitato a 0, 1 o a tutti gli indirizzi IP sul server.
Joe,

7
Si noti, tuttavia, che è possibile pubblicare e servire sia un socket unix locale che un socket di rete specificando entrambe le opzioni sockete bind-address.
danorton,

5
ancora vero da oggi.
Dennis Nolte,

22
Questo è ridicolo.
Phillipp,

2
@AJP Mysql tratta 'localhost' e '127.0.0.1' in modo diverso nel sistema dei privilegi. Confermato qui: viene utilizzato un file socket Unix se non si specifica un nome host o se si specifica il nome host speciale localhost.
Christian Lescuyer,

78

Il collegamento a 127.0.0.x non lo renderà disponibile a tutti i dispositivi, lo renderà disponibile solo localmente. Se si desidera renderlo disponibile a tutte le interfacce, è necessario utilizzare 0.0.0.0. Se si desidera accedervi da più di uno, ma meno di tutte le interfacce, è necessario collegarsi a 0.0.0.0 e firewall dalle interfacce a cui non si desidera accedere.

Inoltre, come secondo livello di sicurezza, dovresti assicurarti che tutti i tuoi utenti MySQL abbiano il campo host impostato su un valore diverso da% (ovvero qualsiasi host).


1
A meno che non si disponga di uno stack di rete rotto, non è possibile associare una porta TCP all'indirizzo 0.0.0.0.
John Gardeniers,

26
È possibile associare a 0.0.0.0. Non riesci proprio a raggiungerlo. Se sei su Linux (o anche su Windows, installa netcat per Windows) prova: in un terminale: nc -l 0.0.0.0 4321 e in un secondo terminale: telnet <IP di qualsiasi interfaccia del tuo computer> 4321 Ed esso si collegherà ad esso.
Pantera grigia,

Come ho detto, a meno che tu non abbia uno stack di rete rotto ...
John Gardeniers,

1
@JohnGardeniers E 'questo il motivo per cui è nel PI linux (7) pagina man definito sotto indirizzi speciali: INADDR_ANY (0.0.0.0) means any address for binding;?
ebyrob,

2
Su Debian, crea un file /etc/mysql/conf.d/bindaddress.cnffile con contenuto[mysqld] \n bind-address = 0.0.0.0
Yves Martin

41

Non è possibile associare più di un indirizzo IP, ma è possibile invece associare a tutti gli indirizzi IP disponibili. In tal caso, basta usare 0.0.0.0un indirizzo vincolante nel file di configurazione di MySQL (ad es. /Etc/mysql/my.cnf) come segue:

bind-address    = 0.0.0.0

Se l'indirizzo è 0.0.0.0, il server accetta connessioni TCP / IP su tutte le interfacce IPv4 dell'host server.

Inoltre, se l'indirizzo è ::, il server accetta connessioni TCP / IP su tutte le interfacce IPv4 e IPv6 dell'host server. Utilizzare questo indirizzo per consentire connessioni IPv4 e IPv6 su tutte le interfacce del server.

Oppure puoi semplicemente commentare del bind-address=tutto, quindi si legherà a tutti gli indirizzi. Ma assicurati di non aver skip-networkingabilitato nel tuo my.cnf se vuoi consentire anche le connessioni remote (Leggi di più: MySQL: consenti sia connessioni remote che locali ).

Dopo aver modificato l'indirizzo di associazione, non dimenticare di riavviare il server MySQL:

sudo service mysql restart

Alla fine puoi considerare di eseguire più istanze di MySQL su un singolo computer (porte diverse) con replica Master / Slave. La replica consente di copiare i dati da un server di database MySQL (il master) su uno o più server di database MySQL (gli slave).

Leggi di più:


Funziona benissimo. Ricorda solo di verificare se tutti gli utenti sono autorizzati a connettersi da quel 2 °, 3 °, qualunque indirizzo IP
gies0r

21

No, non puoi. La pagina a cui ti colleghi indica chiaramente:

L'indirizzo IP a cui associare. È possibile selezionare un solo indirizzo. Se questa opzione viene specificata più volte, viene utilizzato l'ultimo indirizzo indicato.

Se non viene specificato alcun indirizzo o 0.0.0.0, il server è in ascolto su tutte le interfacce.


12

Come altri hanno risposto, non c'è ancora modo di legarsi selettivamente a più di un'interfaccia.

Linux ha alcuni strumenti TCP che lo rendono possibile. In questa configurazione, dovresti configurare mysql per l'ascolto su 127.0.0.1 e quindi utilizzare il redir per esporlo su interfacce arbitrarie.

Lo sto usando per aiutare un guest di virtual box a vedere mysql installato sul computer host.

redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &

Nota MySQL> = 8.0.13 consente l'associazione a più di un'interfaccia.
Txyoji,


5

Prima di MySQL 8.0.13, --bind-address accetta un singolo valore di indirizzo, che può specificare un singolo indirizzo IP o nome host non jolly o uno dei formati di indirizzo jolly che consente l'ascolto su più interfacce di rete (*, 0,0 .0.0 o: :).

A partire da MySQL 8.0.13, --bind-address accetta un singolo valore come appena descritto, o un elenco di valori separati da virgola. Quando l'opzione nomina un elenco di più valori, ogni valore deve specificare un singolo indirizzo IP o nome host non jolly; nessuno può specificare un formato di indirizzo jolly (*, 0.0.0.0 o: :).

Fonte: https://dev.mysql.com/doc/refman/8.0/en/server-options.html


3

In my.cnf change (di solito /etc/mysql/my.cnf su Linux o per Windows controlla questa risposta.

bind-address                   = 127.0.0.1

per

bind-address                   = 0.0.0.0

Quindi riavviare mysql (sul servizio Ubuntu mysql restart ) su Windows di solito il servizio si riavvia tramite Win + R services.msc

0.0.0.0 gli dice di associarsi a tutti gli IP disponibili con la porta fornita anche in my.cnf

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.